NOIP2016 提高组 复赛 day1 toy 玩具谜题
2016-12-30 20:58
274 查看
NOIP2016 提高组 复赛 day1 toy 玩具谜题
1.读了题目,给绕晕了,什么朝里,朝内,左边右边,没心思手动模拟,但题意是看明白了,模拟准备交给程序。
2.因每个玩具有两个信息,朝向,职业名称,第一构想就是用结构体来描述玩具。
3.看到样例1就没往下看,没找到n的范围,直接数组开到10^6,测试完样例2,才发现下面给出了n的范围,题目一定要看看完啊,题中n的范围10^5,还好,本人开得够大。
4.程序的核心设置了变量cur用来保存当前的玩具在数组中的位置。
5.在处理朝内朝外,左边右边时,采用了函数的做法,否者在if,else里的代码量太大了。引入了clockwise(),anticlockwise()两个函数,大大减轻了代码输入量,比较清楚的理清了逻辑关系。
6.处理移动玩具时,采用取模的方式,逆时针cur=(cur+move)%n;;顺时针cur=(cur-move+n)%n;。此处处理手法请读者多多掌握,很是有用(NOIP2012 提高组 复赛 day1 vigenere)里就有涉及,详见http://blog.csdn.net/mrcrack/article/details/52303717
7.样例1,样例2通过后,提交AC。
耗时:30分钟
难度:简单偏中等
附上AC代码,编译环境Dev-C++4.9.9.2:
//2016 toy 2016-12-30
2016-12-30 20:57
1.读了题目,给绕晕了,什么朝里,朝内,左边右边,没心思手动模拟,但题意是看明白了,模拟准备交给程序。
2.因每个玩具有两个信息,朝向,职业名称,第一构想就是用结构体来描述玩具。
3.看到样例1就没往下看,没找到n的范围,直接数组开到10^6,测试完样例2,才发现下面给出了n的范围,题目一定要看看完啊,题中n的范围10^5,还好,本人开得够大。
4.程序的核心设置了变量cur用来保存当前的玩具在数组中的位置。
5.在处理朝内朝外,左边右边时,采用了函数的做法,否者在if,else里的代码量太大了。引入了clockwise(),anticlockwise()两个函数,大大减轻了代码输入量,比较清楚的理清了逻辑关系。
6.处理移动玩具时,采用取模的方式,逆时针cur=(cur+move)%n;;顺时针cur=(cur-move+n)%n;。此处处理手法请读者多多掌握,很是有用(NOIP2012 提高组 复赛 day1 vigenere)里就有涉及,详见http://blog.csdn.net/mrcrack/article/details/52303717
7.样例1,样例2通过后,提交AC。
耗时:30分钟
难度:简单偏中等
附上AC代码,编译环境Dev-C++4.9.9.2:
//2016 toy 2016-12-30
#include <stdio.h>
struct people{
int direction;
char prof[20];
}p[1000000];
int cur,dir,move;
int n;
void clockwise(){
cur=(cur-move+n)%n;
}
void anticlockwise(){
cur=(cur+move)%n;
}
int main(){
int m;
int i,j;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
scanf("%d%s",&p[i].direction,&p[i].prof);
}
cur=0;
for(i=0;i<m;i++){
scanf("%d%d",&dir,&move);
if(p[cur].direction==0){//当前朝内
if(dir==0){
clockwise();
}else{
anticlockwise();
}
}else{//当前朝外
if(dir==1){
clockwise();
}else{
anticlockwise();
}
}
}
printf("%s\n",p[cur].prof);
return 0;
}
2016-12-30 20:57
相关文章推荐
- NOIP2016提高组day1试题 玩具谜题
- 玩具谜题(NOIP2016提高组day1第1题)
- NOIP2016 day1 T1 玩具谜题 toy 题解
- 玩具谜题 NOIP2016 提高组 Day1 T1
- luogu1563 玩具谜题(NOIP2016提高组第1题)
- luogu1563 玩具谜题(NOIP2016提高组第1题)
- 【NOIP2016提高组复赛】玩具谜题
- 玩具谜题(NOIP2016提高组Day1T1)
- Noip2016提高组 玩具谜题toy
- 挑战nbc (noip2016)膜你赛Day1提高组
- NOIP2015复赛提高组day1(A:神奇的幻方 B:信息传递 C:斗地主)
- C++——NOIP2016提高组day1 t2——天天爱跑步
- NOIP2011 提高组 复赛 day1 mayan mayan游戏
- Luogu P1563 [NOIp提高组2016]玩具谜题
- NOIP2012 提高组 复赛 day1 vigenere vigenere密码
- 暑假集训test8(伪)【NOIP2016提高组Day1】
- C++——NOIP2016提高组day1 t3——换教室
- NOIP2011 提高组 复赛 day1 carpet 铺地毯
- NOIP2011 提高组 复赛 day1 hotel 选择客栈
- 7.11 noip2013提高组复赛day1