题解 P1563 【玩具谜题】

· · 题解

新手一枚,才看到题目的时候有点怕(毕竟提高组),但实际上还是很简单的。

附代码:

#include<stdio.h>
struct model{
    int dir;
    char name[11];
}toy[100010];
struct does{
    int side,s;
}com[100010];
int now=1,n,m;
void go(int dir,int side,int s)
{
    int flag,dis=dir+side;
    if(dis==1)flag=1;
    else flag=0;
    if(flag)
    {
        if(now+s>n)now+=s-n;
        else now+=s;
    }
    else
    {
        if(now-s<=0)now+=n-s;
        else now-=s;    
    }
}
int main() 
{
    int i;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)scanf("%d %s",&toy[i].dir,toy[i].name);
    for(i=1;i<=m;i++)scanf("%d %d",&com[i].side,&com[i].s);
    for(i=1;i<=m;i++)go(toy[now].dir,com[i].side,com[i].s);
    printf("%s",toy[now].name);

    return 0;
}

(没用cin/cout是怕超时)

(话说好多人超时,为什么我的代码92ms过了,难道评测系统性能比以前好了?)