玩具谜题(toy)

来源:noip2016 提高组 day1

[题目描述]

小南有一套可爱的玩具小人, 它们各有不同的职业。

有一天, 这些玩具小人把小南的眼镜藏了起来。 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图:

(不知道大家有没有发现mengbierm,What that mean?)

这时singer告诉小南一个谜題: "眼镜藏在我左数第3个玩具小人的右数第1个玩具小人的左数第2个玩具小人那里。 "

小南发现, 这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的: 面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向; 而面向圈外的玩具小人, 它的左边是逆时针方向, 右边是顺时针方向。

小南一边艰难地辨认着玩具小人, 一边数着:

singer朝内, 左数第3个是archer。

archer朝外,右数第1个是thinker。

thinker朝外, 左数第2个是writer。

所以眼镜藏在writer这里!

虽然成功找回了眼镜, 但小南并没有放心。 如果下次有更多的玩具小人藏他的眼镜, 或是谜題的长度更长, 他可能就无法找到眼镜了 。 所以小南希望你写程序帮他解决类似的谜題。 这样的谜題具体可以描述为:

有 n个玩具小人围成一圈, 已知它们的职业和朝向。现在第1个玩具小人告诉小南一个包含 m条指令的谜題, 其中第 z条指令形如"左数/右数第 s个玩具小人"。 你需要输出依次数完这些指令后,到达的玩具小人的职业。

[输入格式]

输入的第一行包含两个正整数 n,m, 表示玩具小人的个数和指令的条数。

接下来 n行, 每行包含一个整数和一个字符串, 以逆时针为顺序给出每个玩具小人的朝向和职业。其中0表示朝向圈内, 1表示朝向圈外。保证不会出现其他的数。字符串长度不超过10且仅由小写字母构成, 字符串不为空, 并且字符串两两不同。 整数和字符串之问用一个空格隔开。

接下来 m行,其中第 z行包含两个整数 a,s,表示第 z条指令。若 a= 0表示向左数 s个人;若a= 1 ,表示向右数 s个人。保证a不会出现其他的数 1≤ s<n 。

[输出格式]

输出一个字符串, 表示从第一个读入的小人开始, 依次数完 m条指令后到达的小人的职业。

[输入样例#1]

7 3

0 singer

0 reader

0 mengbier

1 thinker

1 archer

0 writer

1 mogician

0 3

1 1

0 2

[输出样例#1]

Writer

[输入样例#2]

10 10

1 C

0 r

0 P

1 d

1 e

1 m

1 t

1 y

1 u

0 V

1 7

1 1

1 4

0 5

0 3

0 1

1 6

1 2

0 8

0 4

[输出样例#2]

Y

[子任务]

[解法]

这道题放在提高组真够水的,这道题的描述比较清楚,只需模拟singer说的话即可。难点有二,其一是顺逆时针与小人面向与左右;其二是数数的方法(即现在所在哪个小人。解决这两点,拿这100分就游刃有余了。

对于第一个难点我们发现当面向里且向左数或面向外向右数为顺时针,面向外且向左数或面向内向右数为逆时针。即同号顺时针异号逆时针

对于第二个难点我可以找规律解决,文字不好描述,请看代码理解即可。

[代码(AC)]

Zjd同学:

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int now=;//表示现在位于哪个小人
int n,m;
struct s{
int m;
string job;
}people[];
void walk(int f,int step){
if(people[now].m==f){//顺时针走
step%=n;
if(now>=step)now-=step;
else {
now=n-(step-now);
}
}
else {//逆时针走
step%=n;
if((n--now)>=step)now+=step;
else {
now=step-(n--now)-;
}
}
}
int main(){
freopen("toy.in","r",stdin);
freopen("toy.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<n;++i){
scanf("%d ",&people[i].m);
cin>>people[i].job;//string%s 不知为何有错,只好无脑cin
}
for(int i=;i<m;++i){
int f;
int step;
scanf("%d %d",&f,&step);
walk(f,step);
}
cout<<people[now].job;
return ;
}

Gzd同学(居然AC了):

 #include<iostream>

 #include<iomanip>

 #include<cmath>

 #include<cstdio>

 #include<cstring>

 #include<string>

 #include<algorithm>

 using namespace std;

 int n,m,b[],i=;

 bool a[],a1[];

 string s[];

 int main()

 {

     freopen("toy.in","r",stdin);

     freopen("toy.out","w",stdout);

     cin>>n>>m;

     for(i=;i<=n;i++)

     {

         cin>>a[i]>>s[i];

     }

     for(i=;i<=m;i++)

     {

         cin>>a1[i]>>b[i];

     }

     i=;

     for(int j=;j<=m;j++)

         {

             if(a[i]==)

             {

                 if(a1[j]==)

                 {

                     i-=b[j];

                     if(i<)

                     {

                         i=(n+)-(-i);

                     }

                 }

                 else

                 {

                     i+=b[j];

                     if(i>n)

                     {

                         i=+(i-n);

                     }

                 }

             }

             else

             {

                 if(a1[j]==)

                 {

                     i+=b[j];

                     if(i>n)

                     {

                         i=+(i-n);

                     }

                 }

                 else

                 {

                     i-=b[j];

                     if(i<)

                     {

                         i=(n+)-(-i);

                     }

                 }

             }

         }

     cout<<s[i];

     return ;

 }

2018-11-03 23:21:43

[题解]玩具谜题(toy)的更多相关文章

  1. [Noip2017][Day 1][T1]玩具谜题(toy.cpp)

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...

  2. Noip2016提高组 玩具谜题toy

    Day 1 T1 题目大意 一些naive的玩具小人把小南的眼镜藏起来,但小南有一份too simple的小纸条,告诉小南眼镜在第一个小人往哪数第几个的往哪数的第几个的往哪数第几个的往哪数的第几个的往 ...

  3. BZOJ 1010: [HNOI2008]玩具装箱toy 斜率优化DP

    1010: [HNOI2008]玩具装箱toy Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再 ...

  4. 【bzoj1010】[HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9281  Solved: 3719[Submit][St ...

  5. BZOJ 1010 [HNOI2008]玩具装箱toy

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 7184  Solved: 2724[Submit][St ...

  6. bzoj1010: [HNOI2008]玩具装箱toy(DP+斜率优化)

    1010: [HNOI2008]玩具装箱toy 题目:传送门 题解: 很明显的一题动态规划... f[i]表示1~i的最小花费 那么方程也是显而易见的:f[i]=min(f[j]+(sum[i]-su ...

  7. NOIP201605玩具谜题-解题报告

    NOIP201605玩具谜题-解题报告                                                                         2019-11- ...

  8. NOIP 2016 玩具谜题

    洛谷 P1563 玩具谜题 洛谷传送门 JDOJ 3136: [NOIP2016]玩具谜题 D1 T1 JDOJ传送门 Description 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天 ...

  9. BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]

    1010: [HNOI2008]玩具装箱toy Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 9812  Solved: 3978[Submit][St ...

随机推荐

  1. vs 2017 vs code

    vs 2017   Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH ==== ...

  2. Mybatis之旅第三篇-SqlMapConfig.xml全局配置文件解析

    一.前言 刚换工作,为了更快的学习框架和了解业务,基本每天都会加班,导致隔了几天没有进行总结,心里总觉得不安,工作年限越长越感到学习的重要性,坚持下去!!! 经过前两篇的总结,已经基本掌握了mybat ...

  3. 《前端之路》之五 head 头标签指南

    12:head 头标签指南 常见头标签 DOCTYPE 文档模式 对文档进行有效性验证 告诉用户代理或浏览器这个文档是按照什么DTD写的,但是这个动作是被动的,每次页面加载时,浏览器并不会下载DTD, ...

  4. springboot~ObjectMapper~dto到entity的自动赋值

    实体与Dto自动赋值 在开发的过程中,实体之间相互赋值是很正常的事,但是我们一般的方法都通过set和get方法来进行的,如果要赋值的字段少那还行,但是需要赋值的字段超过10个,那就是个灾难,你会看到整 ...

  5. 爸爸又给Spring MVC生了个弟弟叫Spring WebFlux

    情景引入 很早之前,Java就火起来了,是因为它善于开发和处理网络方面的应用. Java有一个爱好,就是喜欢制定规范标准,但自己又不善于去实现. 反倒是一些服务提供商使用它的规范标准来制造应用服务器而 ...

  6. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  7. 自定义GridControl编辑器

    本文版权归博主 惊梦无痕 所有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作.SourceLink 鉴于网上的针对GridControl的一些代码比较凌乱,且功能分散,故将整理过的代码分享出来 ...

  8. .NET ClrProfiler ILRewrite 商业级APM原理

    Demo:https://github.com/caozhiyuan/ClrProfiler.Trace 背景 为了实现自动.无依赖地跟踪分析应用程序性能(达到商业级APM效果),作者希望能动态修改应 ...

  9. AI产品的商业模式

    AI产品的商业模式 ------------------------------------------------------------------------------------------ ...

  10. Ajax常见面试题

    1,什么是ajax? 为什么要使用ajax? 1.ajax是"asynchornous javascript and xml "的缩写,指一种创建交互式网页应用的网页开发技术. 2 ...