NOIP2016Day1T1玩具谜题解题报告
来源:互联网 发布:百度云 知乎 编辑:程序博客网 时间:2024/06/05 05:32
原题见洛谷(https://www.luogu.org/problem/show?pid=1563)
这道题是一道很裸的模拟题,在noip的day1t1理论上是最简单的一道题,而且数据范围在100000,基本上纯暴力直接就过了而且1s/128MB的空间限制也不是小了,题目中虽然玩具有左右,寻找的方向也有左右,看起来有四种结果但是我们在进行分析后发现,不过只有两种情况:向左走和向右走,分析如下:
玩具(1) 方向(1) 向左
玩具(0) 方向(1) 向右
玩具(1) 方向(0) 向右
玩具(0) 方向(0) 向左
不过是这两种情况
那么我们用head来表示现在所指向的玩具way来表示所发出指令的方向,ans来表示要向当前方向前进的步数,定义一个结构体node其中包含玩具朝向的方向和玩具的名称之后呢如果head所指向的玩具所指的方向和是同一个方向那么讲head减去ans再加上n并对这个数取余,这里加n是为了防止对负数取余,如果要走的方向和玩具朝向的方向不一致那么将head加上ans并对这个数取余即可,那么最后得到的head就是我们要的了,最后将head所指的名字输出即可
下面是AC代码
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;struct node{ bool dir; char name[20];}toy[100000];int n,m;int head=0;int way,ans;int main(){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ cin>>toy[i].dir>>toy[i].name; } for(int i=0;i<m;i++){ scanf("%d%d",&way,&ans); if(toy[head].dir==way){ head=((head-ans)+n)%n; } else{ head=(head+ans)%n; } } printf("%s",toy[head].name); return 0;}
然后呢我自洛谷上学到了快速输入输出,大概时间有我原来评测的总时间332ms优化到151ms要比原来块一倍
贴代码
inline int read(){ register int x=0;bool f=1; register char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=0;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return f?x:-x;}
阅读全文
0 0
- NOIP2016Day1T1玩具谜题解题报告
- [noip2016]玩具谜题 题解
- 【题解/2016提高】P1563 玩具谜题
- NOIP2016 day1 T1 玩具谜题 toy 题解
- [luogu-1563]noip2016day1-T1 玩具谜题 题解
- 【NOIP 2016 day1 T1 T3】玩具谜题,换教室——题解
- [NOIP2016] 玩具谜题
- 玩具谜题
- 玩具谜题(NOIP2016)
- noip2016d1t1 玩具谜题
- 玩具谜题
- noip2016D1T1 玩具谜题
- 【NOIP】玩具谜题
- 玩具谜题
- 【noip2016】玩具谜题
- POJ1258题解题报告
- 100题解题报告
- HNOI2008玩具装箱toy题解
- JDBC技术
- spring boot 使用hibernate-validation
- osgViewer应用基础
- NVcaffe源码阅读——Blob的重新构建
- 排序算法
- NOIP2016Day1T1玩具谜题解题报告
- spring boot 多数据源动态切换
- Ubuntu14.04安装最新版Docker
- Hadoop小兵笔记【五】hadoop2.2.0伪分布式环境搭建疑难-第一个用例wordcount失败
- 一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高
- 多人聊天室(基于Linux的SOCKET UDP编程)
- Python 标准库 urllib
- spring boot 使用fastjson
- CodeForces 589F:Gourmet and Banquet(二分+贪心)