noip2016_day1_T1
2016-11-24 21:58
127 查看
这道题就是纯模拟,直接按照他给的方法模拟即可。
注意如果直接使用循环模拟的话会有可能爆时。。。(王三岁不会告诉你我是怎么知道的。)
直接附上召唤王三岁的代码:(后有总结)
#include<stdio.h> #include<string.h> struct node{ int right,left; char c[30]; node() { right=left=0; } }tree[100001]; int n,m; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { int flag=0; scanf("%d ",&flag); scanf("%s",&tree[i].c); if(flag==0) { tree[i].right=1; tree[i].left=-1; } else { tree[i].right=-1; tree[i].left=1; } } int flag=1; for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); y=y%n; if(x==0)//goto left { if(tree[flag].left==1) { flag=flag+y; if(flag>n) { flag-=n; } } else { if(y>=flag) { y=y-flag; flag=n-y; } else { flag-=y; } } } else//goto right { if(tree[flag].right==1) { flag=flag+y; if(flag>n) { flag-=n; } } else { if(y>=flag) { y=y-flag; flag=n-y; } else { flag-=y; } } } } printf("%s",tree[flag].c); }
大概就是如此了。
最好还是注意一下数组开的问题。
(很想爆粗口因为第二题80%的LCA都写出来了结果第一题在这里丢分。果然应该更加谨慎才好。)
附加上一些总结:
1.数组的大小一定要看好不要开小了,如果需要的数组太大了的话可以考虑优化。
2.从今年的情况看,内存有所增大,可以开大就开大,不要犹豫,小了崩盘很划不来
3.减少用循环!减少用循环!减少用循环orz!(死在循环下,并不太风流啊西吧)
王三岁的惨痛(zuo si)经验告诉大家,慎用循环。
相关文章推荐
- BZOJ 3668 NOI 2014 Day1_T1 起床困难综合症 二进制拆分
- Day1:T1 模拟 T2 拓扑排序
- 玩具谜题(NOIP2016提高组day1第1题)
- 暑假集训test8(伪)【NOIP2016提高组Day1】
- NOIP 2017 day1 t1
- DAY1 T1
- C++——NOIP2016提高组day1 t2——天天爱跑步
- 2017.9.23 NOIP2017 金秋杯系列模拟赛 day1 T1
- noip2006 day1 t1 能量项链
- 洛谷P1850 换教室(NOIp2016 Day1 T3)(BZOJ 4720)
- NOIP2017 Day1 T1 小凯的疑惑 真·奥义·蒟蒻总结
- NOIp2017,Day1,T1 小凯的疑惑
- C++——NOIP2016提高组day1 t3——换教室
- Noip2016 提高组 Day2 T1 组合数问题
- NOIP2016提高组day1试题 玩具谜题
- 玩具谜题 NOIP2016 提高组 Day1 T1
- Noip2014 提高组 Day1 T1 生活大爆炸版石头剪刀布 + Day2 T1 无线网络发射器选址
- NOIP2016 Day1
- NOIP2017 Day1 T1
- 洛谷noip 模拟赛 day1 T1