【luogu1563】【niop2016】玩具谜题 [模拟]

luogu1563

快乐刷水题诶嘿嘿嘿

是逆时针方向!!!朝内是0,朝外是1,向左数是0,向右数是1

可以发现,如果为0 0或者1 1的情况时坐标都变为(cur+n-x)%n 然后0 1和1 0的情况时坐标变为(cur+x)%n

然后我们就可以用单身狗操作(并不)异或来判断

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=100100;
 4 char name[N][20];
 5 int cx[N],fx;
 6 
 7 inline int rd()
 8 {
 9     int w=0,x=0;char ch=0;
10     while(!isdigit(ch)) w|=ch=='-',ch=getchar();
11     while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
12     return w?-x:x;
13 }
14 int main()
15 {
16     int n,m;
17     scanf("%d%d",&n,&m);
18     for(int i=1;i<=n;i++)
19     scanf("%d%s",&cx[i],name[i]);
20     int cur=1,x;
21     for(int i=1;i<=m;i++)
22     {
23         scanf("%d%d",&fx,&x);
24         if(fx^cx[cur]) cur=(cur+x)%n;
25         else cur=(cur+n-x)%n;
26         if(cur==0) cur=n;
27     }
28     printf("%s",name[cur]);
29     return 0;
30 }
原文地址:https://www.cnblogs.com/lxyyyy/p/10366965.html