模拟——玩具谜题

来源:互联网 发布:怎么开一个淘宝店 编辑:程序博客网 时间:2024/05/08 01:06

题目来源


洛谷P1563玩具谜题

https://www.luogu.org/problem/show?pid=1563





思路


结构体存小人信息(名字toy[i].na+方向toy[i].dir[朝圈外1 朝圈内-1])

pos表示当前位置

输入步骤(方向d[向左-1 向右1]+步数s)

则pos=(pos-d*toy[pos].dir*s)

(

   向左&&朝外==向右&&朝内==逆时针 => pos=pos-s(mod n&&pos>0)

   向左&&朝内==向右&&朝外==顺时针 => pos=pos+s(mod n&&pos>0)

)




代码(C++)



#include <iostream>#include <cstdio>#include <string>using namespace std;int n,m,pos=1,d,s;struct p{int dir;string na;}toy[100010];int main(){    cin>>n>>m;    for(int i=1;i<=n;i++)    {        cin>>toy[i].dir>>toy[i].na;        if(toy[i].dir==0) toy[i].dir=-1;    }    for(int i=1;i<=m;i++)    {        cin>>d>>s;        s=s%n;        if(d==0)     d=-1;        if(d*toy[pos].dir==-1)        {            pos+=s;            pos%=n;        }        else         {            pos=pos-s;            pos%=n;            pos+=n;            pos%=n;        }        if(pos==0)    pos=n;    }    cout<<toy[pos].na;    return 0;}


原创粉丝点击