[日常训练-总结] [NOIP 2016 提高组] 玩具谜题
按照题意模拟即可,但是边界没有考虑到位。
实现上第一次使用了while导致TLE了。
这在OI赛制是致命的告诉我们要写对拍。
还没有考虑边界,和语法也差了。
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
//By MaZhaoZe
struct p{
string name; //职业
int c; //方向朝内还是朝外
};
void solve(){
int n,m;
cin>>n>>m; //多少个小人 和 多少条命令
vector<p> z(n); //小人信息数组
for(int i=0;i<n;i++){
cin>>z[i].c>>z[i].name; //输入
}
int now=0; //当前到哪里了
while(m--){
int a,s; //方向和步数
cin>>a>>s;
if(a==z[now].c){ //如果方向都一样
now-=s; //那么就是顺时针
if(now<0) now+=n; //如果变成负数了那么我们加上一个n
}else{ //如果不一样
now+=s; //那就是逆时针
if(now>=n) now-=n; //如果大于玩具总数了那我们减去一个n
}
}
cout<<z[now].name; //输出答案
}
int main()
{
solve();
return 0;
}

浙公网安备 33010602011771号