洛谷 P1563 玩具谜题(模拟)

嗯...

题目链接:https://www.luogu.org/problem/P1563

这道题主要问题就是弄明白顺逆时针的问题,其实可以简化成一个异或的问题:
当head与x异或值为零时,即为顺时针;否则为逆时针。

其次要注意顺逆时针的处理:

顺:now = (now + y) % n;  逆:now = (now + n - y) % n;

细节:a[]的下标要从0开始,因为在%操作中余数会出现0的情况

AC代码:

 #include<cstdio>
#include<iostream> using namespace std; struct node{
int head;
string name;
} a[]; int main(){
int n, m;
scanf("%d%d", &n, &m);
for(int i = ; i < n; i++)
cin >> a[i].head >> a[i].name;
int now = ;
for(int i = ; i <= m; i++){
int x, y;
scanf("%d%d", &x, &y);
if(x ^ a[now].head) now = (now + y) % n;
else now = (now + n - y) % n;
}
cout << a[now].name;
return ;
}

AC代码

上一篇:P1563 玩具谜题(简单模拟)


下一篇:洛谷P1563 玩具谜题 简单模拟