【luogu1563】【niop2016】玩具谜题 [模拟]
快乐刷水题诶嘿嘿嘿
是逆时针方向!!!朝内是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 }