【题解】P1563 玩具谜题

题面

题目传送门

前言

好恶心,云落讨厌大量的分支结构

正文

定义一个结构体 $ p_i= \lbrace fc_i,nm_i \rbrace $ 表示编号为 $ i $ 的小人的朝向与姓名

由题意,分四类讨论顺逆时针,维护一个 $ now $ 指针,每次更新即可

答案为 $ nm_{now} $

环形结构警告!

代码

#include<iostream>
using namespace std;
const int maxn=1e5+10;
struct node{
    int fc;
    string nm;
}p[maxn];
int n,m;
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++){
        cin>>p[i].fc>>p[i].nm;
    }
    int now=0;
    for(int i=1;i<=m;i++){
    	int x,y;
        cin>>x>>y;
        if(p[now].fc==0&&x==0){
        	now=(now+n-y)%n;
		}else if(p[now].fc==0&&x==1){
			now=(now+y)%n;
		}else if(p[now].fc==1&&x==0){
			now=(now+y)%n;
		}else if(p[now].fc==1&&x==1){
			now=(now+n-y)%n;
		}
    }
    cout<<p[now].nm<<endl;
    return 0;
}

后记

好像一个不小心手滑贴错代码了呢!

完结撒花!

posted @ 2024-11-21 11:19  sunxuhetai  阅读(10)  评论(0)    收藏  举报