码迷,mamicode.com
首页 > 其他好文 > 详细

[转]NOIP考试必看

时间:2017-10-22 00:25:56      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:ace   print   试题   失误   cal   fclose   暴力   别人   运行时错误   

转自:http://blog.csdn.net/c20180630/article/details/53158021

说的有不少还是深得laj心的 去年惜败noip也许是对laj浮躁的惩罚吧 今年laj卷土重来了,一定不能犯低级错,这次laj不仅仅是去拿省一了,还要为后面的NOI做准备了 _(:зゝ∠)_

 

1.比赛前一天晚上请准备好你的各种证件,事先查好去往考场的路线。

2.比赛之前请先调整你的屏幕分辨率到你喜欢的大小。

3.比赛之前请把编译器的字体调为你平时惯用的字体,尤其是注意这种字体中的逗号,点,1,l 这种易混淆的字是不是区分明显。

4.在不影响视野的情况下,请将字号尽可能调大,方便查错. 压缩包或许还不能解压,但是文件名已经可以知道了,在选手目录下用代码模板建好所有文件,包 括.c/cpp/pas、.in、.out。

5. 开始比赛,不要急于看题目,将试题第一页的时间、内存限制等等一字不落地看完, 把每题的时空限制写在草稿纸上。

6. 看题目时不能走神,看完题目后将其归入某几个框架中,包括:模拟/枚举/搜索/贪心/动态规划/图论/分治请将题目通读完以后,再开始深入思考你认为最容易的一道题。

7. 根据输入数据的范围大致确定算法复杂度,以下均是可能情况,不绝对:

20:2^20=一百万,O(2^n),搜索

100:100^3=一百万,O(n^3),Floyd/搜索

1000:1000^2=一百万,O(n^2),动态规划/图论

500000:O(nlog(2,n)),二分答案/二分查找/快排/归并

1000000:O(n)或 O(1),数学问题/改变思维方向/贪心

即使这道题再容易,也不要着急写代码,请先明确自己每一步要干什么后,再开始写,轻敌会是你最大的错误。

8.即使这道题看起来再没法做,也不要提早放弃,这个时候纸和笔会是你最好的朋友,自己尝试几个例子,也许你就会找到答案。

9.请一定先明确自己要干什么之后再写程序,不要走一步想一步 写下代码前,必须保证有充足的思考时间,有成熟的想法后再动手。写代码前,尽量用多而强的数据去测试想到的算法,毕竟代码写完后再测试就浪费很多时间了不能想一点写一点,就算是输入部分也要在整体思路理清后再写。

10.如果这是一道动态规划题,请先把转移方程写在纸上再编程。

11.如果思考 30 分钟仍一头雾水,没有可以实现的算法,请你果断屏蔽掉 100%的那一栏数据,开始写60%,50%乃至 30%的算法——在 NOIP 里面,30 分绝不是小数目。

12.如果你发现你旁边的人写得很快,请你放心,他的算法十有八九是错的。

13.虽然 1s+128MB 内存 (这是以前的了,现在应该是 1s + 256MB) 是标准配置,不过也不是每道题都是这样的,还是请认真阅读试卷首页的试题说明。

14.计算内存的方法:数组大小*类型长度/1000 / 1000=所占内存 MB 数,int 类型长度是 4, long long=8。

15.如果对大规模数据的算法正确性不敢保证。可分段处理:先写一个暴力程序应对小规模数据,再写一个高效程序应对大规模数据。以函数方式实现。这样也方便后续对拍。

16.写完程序之后,请一定不要忙着编译,请一定要将你的代码从头到尾通读一遍,也就是静态查错,这是整个编程过程中最重要的步骤,有的变量重复调用问题调试的话,一个小时也看不出来,静态查错可以一下指出错误。

17.静态查错请注意以下方面:

(1)是否写上了 using namespace std?

(2)数组开得是否够大?

(3)变量类型是否正确,答案和中间结果是否会爆 int?

(4)memset 时,所填的 sizeof(XX)的 XX 是不是匹配?大小是不是正确?

(5)外层循环与内层循环的 i,j 是不是混用了?

(6)循环变量的枚举范围是否正确,是否会数组越界?

(7)涉及到边界处理、加一减一之类的问题,请在纸上举个例子,标上下标以后,在编程时参照纸上的下标写

(8)这个程序是在执行你想让它执行的步骤吗?

(9)读入优化处理负数情况了吗?在小规模数据时请不要读入优化,反之,则一定要读入优化。

19.通过样例后,请你一定不要放松警惕,因为样例并不能覆盖所有的情况,请自己设计几组大数据,争取卡死你的程序。特殊规律的数据,例如全是最小值,全是最大值,单调上升/下降数据最能影响程序效率与正确性。

20.如果出现问题,请你调试你的程序,请一定要分模块调试,不要从头跟到尾。

21.如果你已经设计不出能卡住你的程序的数据,恭喜你可以做下一题了。

22.如果你用的是 windows,请你注意把 system(“pause”)注释掉。

23.为了万无一失,请你用 return 0 结束你的程序。

24.在内存允许的情况下,能开普通队列就不要用循环队列,能开下普通数组就不要用滚动数组。

25.在时间允许的情况下,能暴力就暴力,高精度能不压位就不压位,优化不需要的就不要。

26.总之,在不超限制的前提下,能不优化就不优化,以减少代码量和出错概率为第一原则。

27.当比赛还剩下 5~15 分钟的时候,请不要再改动你的程序,即使你怀疑它对你的一个输入给出了错误答案,因为你自己算出的结果也有可能是错的。

28.这个时候请你检查是否注释掉了该注释掉的东西,文件名是否写对,文件夹是否建对,请一定反复检查!

29.请记住,NOIP 不怕暴力,怕瞎算,不怕不会,怕不敢,有时间的话一定要写一个暴力程序去对拍,验证算法的正确性。

30. 沉着,冷静,没有思路上厕所。做能力范围内的事,尽力就好。不担心别人强大,小心自己失误。自己做得完美,就无怨无悔。

31.常用的测试结果:

WA:Wrong answer 错误的答案 
AC:Accepted答案正确;通过 
TLE:Time Limit Exceed超时 
OLE:Output Limit Exceed超过输出限制 
MLE:Memory Limit Exceed超内存 
RE:Runtime Error运行时错误 
PE:Presentation Error格式错误 
CE:Compile Error无法编译

32.复习提纲:

(1)数学思维题
(2)高精度计算(加,减,乘,除)
(3)几种排序算法的比较和灵活运用
(4)递推递归题
(5)分治算法(归并排序,求逆序对,二分思想的灵活运用)
(6)贪心算法
(7)动态规划(几种背包问题,最长不下降序列,石子归并,最长公共子序列)
(8)队列,堆栈,树型结构的典型问题
(9)DFS,BFS(记忆化搜索,高效剪枝)
(10)最短路径(Floyed,Dijstra,Bellman-Ford,SPFA),最小生成树(kruscal,prim),并查集
(11)字符函数,结构体内联函数,重载运算符,大根堆,小根堆,优先队列(黑科技。。。)

33、解压考试文件(密码有大小写),争取一遍通过。
34、根据题目,建好考试文件夹(CQ-0001),生成考试题目的cpp文件,把头文件默写出来,简单调试一下程序,输入输出文件。
(1) 默写头文件
(2) 文件结束

[cpp] view plain copy
 
 print?
  1. fclose(stdin);  
  2. fclose(stdout);  
  3. return 0;  

(3)静态查错,制造特殊数据(极小,极大,全相等,分母不等于0)
(4)随机函数自动生成数据,对拍程序。

 

未完待续...

 

[转]NOIP考试必看

标签:ace   print   试题   失误   cal   fclose   暴力   别人   运行时错误   

原文地址:http://www.cnblogs.com/keximeiruguo/p/7707331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!