NOIP-玩具谜题
题目描述
有一天,这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外,如下图:
这时 `singer` 告诉小南一个谜题:「眼镜藏在我左数第 3 个玩具小人的右数第 1 个玩具小人的左数第 2 个玩具小人那里。」
小南发现,这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的:面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。
小南一边艰难地辨认着玩具小人,一边数着:
`singer` 朝内,左数第 3 个是 `archer`。
`archer` 朝外,右数第 1 个是 `thinker`。
`thinker` 朝外,左数第 2 个是 `writer`。
所以眼镜藏在 `writer` 这里!
虽然成功找回了眼镜,但小南并没有放心。如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。所以小南希望你写程序帮他解决类似的谜题。这样的谜题具体可以描述为:
有 n 个玩具小人围成一圈,已知它们的职业和朝向。现在第 1 个玩具小人告诉小南一个包含 m 条指令的谜题。其中第 i 条指令形如「左数/右数第 si 个玩具小人」。你需要输出依次数完这些指令后,到达的玩具小人的职业。
输入描述:
输入的第一行包含两个正整数 n, m,表示玩具小人的个数和指令的条数。
接下来 n 行,每行包含一个整数和一个字符串,以逆时针为顺序给出每个玩具小人的朝向和职业。其中 0 表示朝向圈内,1 表示朝向圈外。保证不会出现其他的数。字符串长度不超过 10 且仅由小写字母构成,字符串不为空,并且字符串两两不同。整数和字符串之问用一个空格隔开。
接下来 m 行,其中第 i 行包含两个整数 a
i
, s
i
,表示第 i 条指令。若 a
i
= 0,表示向左数 s
i
个人;若 a
i
= 1,表示向右数 s
i
个人。保证 a
i
不会出现其他的数。1 ≤ s
i
< n。
输出描述:
输出一个字符串,表示从第一个读入的小人开始,依次数完 m 条指令后到达的小人的职业。
备注:
1 ≤ n, m ≤ 100000
#include<iostream>
using namespace std;
typedef struct
{
char name[];
int type;
}stu; int main()
{
int m,n,i;
cin>>m>>n;
stu peo[m];
for(i=;i<m;i++)
{
cin>>peo[i].type>>peo[i].name;
}
int a,b;
int j=;
while(n--)
{
cin>>a>>b;
if(peo[j].type==)
{
if(a==)
{
j = (j+b)%m;
}
else
{
j = (m+j-b)%m;
}
} else
{
if(a==)
{
j = (j+b)%m;
}
else
{
j = (m+j-b)%m;
}
} }
cout<<peo[j].name;
return ;
}
总结:
- 环形数组的增量用 i = ( i + x )%max; 减量用 i = ( max + i - x)%max; x 为变化量
- 注意朝向不同左右所对应的加减不同
NOIP-玩具谜题的更多相关文章
- NOIP 2016 玩具谜题
洛谷 P1563 玩具谜题 洛谷传送门 JDOJ 3136: [NOIP2016]玩具谜题 D1 T1 JDOJ传送门 Description 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天 ...
- [题解]玩具谜题(toy)
玩具谜题(toy) 来源:noip2016 提高组 day1 [题目描述] 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个 ...
- 玩具谜题(NOIP2016)
题目链接:玩具谜题 提高组日常水题. 直接模拟,有需要注意的点会在代码后讲解: #include<bits/stdc++.h> using namespace std; int main( ...
- P1563 玩具谜题
P1563 玩具谜题 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: ...
- Map与对象关系的思考之P1563玩具谜题
P1563 玩具谜题 结论: map在一些情况有种"对象"的意味,在JSON中,对象可以用K-V格式存储:mybatis中参数是map或者对象都可以实现解析...k-v格式的数据存 ...
- 【基础算法-模拟-例题-玩具谜题】-C++
原题链接P1563 玩具谜题 这道题依然是一道模拟题目,就简单讲讲坑点: 1.有些时候在转圈的时候要用到它们站成了一个环的性质! 2.小人面朝的方向影响了它们左右的方向! 3.注意考虑顺时针逆时针与小 ...
- NOIP201605玩具谜题-解题报告
NOIP201605玩具谜题-解题报告 2019-11- ...
- noip 2016 day1 T1玩具谜题
题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...
- NOIP day1 玩具谜题
逻辑有一些复杂,但是理解之后就很简单.题目描述中mogician什么的太暴力了...-1s 按照题目描述模拟,就能满分. /* Au: GG * CCF NOIP2016 day1 * toy */ ...
- 2556. [NOIP2016]玩具谜题
[题目描述] 小南有一套可爱的玩具小人,它们各有不同的职业.有一天,这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝国内,有的面朝圈外.如下图: 这时singer告诉小南 ...
随机推荐
- 【Java面试题】19 final,finally和finalize的区别
总体区别 final 用于申明属性,方法和类,表示属性不可变,方法不可以被覆盖,类不可以被继承.finally 是异常处理语句结构中,表示总是执行的部分. finallize ...
- jQuery使用(十):jQuery实例方法之位置、坐标、图形(BOM)
offset() position() scrollTop().scrollLeft width().height() innerWidth().outerWidth().innerHeight(). ...
- PyQt5之布局管理
目录 一 写在开头 1.1 本文内容 二 绝对布局 三 布局类 3.1 水平布局(QHBoxLayout)和垂直布局(QVBoxLayout) 3.2 水平布局和垂直布局实例 3.3 网格布局(QGr ...
- 第二十一节:ADO层次上的海量数据处理方案(SqlBulkCopy类插入和更新)
一. 简介 1. 背景: 虽然前面EF的扩展插件Z.EntityFramework.Extensions,性能很快,而且也很方便,但是该插件要收费,使用免费版本的话,需要定期更新,如果不更新,将失效, ...
- js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)
javascript是单线程,一切javascript版的"多线程"都是用单线程模拟出来的,通过事件循环(event loop)实现的异步. javascript事件循环 事件循环 ...
- 预置app/apk到系统 && 预置so库进系统 && 预置普通文件和文件夹进系统
https://blog.csdn.net/zhandoushi1982/article/details/4695460
- underscore用法大全
1._.find函数 var one = _.find(all, function (item) { return item.C_ID == selected; }); $('#C_NAME').va ...
- CReLU激活函数
转载自CSDN, CReLU激活函数 CReLU 一种改进 ReLU 激活函数的文章,来自ICML2016. 1. 背景介绍 整个文章的出发点来自于下图的统计现象:  为了看懂上图. (1)首先介绍 ...
- 第四章:Oracle12c 数据库在linux环境安装
一:搭建yum 仓库 对于新手可以参考此文:<Vmware Workstation _linux yum 仓库搭建>.<CentOS7.2 创建本地YUM源和局域网YUM源> ...
- 调用脚本的方式自动的创建或者是更新oracle数据库自带的Seq序列号的值
执行脚本: CREATE OR REPLACE PACKAGE PKG_QUERY IS -- Author : ADMINISTRATOR -- Created : 2016/12/8 星期四 10 ...