Loading

[日常训练-总结] [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;
}

aclink

posted @ 2025-12-29 22:34  MagnusSM2  阅读(9)  评论(0)    收藏  举报