距离NOIP还有几个月怎么复习

考前:

  考试前把读入优化和库以及文件写好做好准备工作,另外放松心态,太慌张了肯定考不好··将本人的注意力集中起来

考场战略:

  考试的根本战略是对于每道题先想个20分钟,假如想不出个靠谱的办法就赶紧暴力,一定要打暴力,想不出正解要打暴力,想出了正解对拍也要打暴力,而且把暴力打了之后心里都踏实得多··最少保底了,打完后再想正解.

标题考虑:

  先要肯定大致方向:模仿(常常只要第一题),策略(贪婪等),数学,数据构造,图论,dp,字符串,树,二分,三分,搜索,(多半会加上剪枝折半记搜或者迭代加深)

  合理应用并查集,哈希,倍增,差分,链表,优先队列,dfs序,桶,单调队列,单调栈等辅助算法

  充沛应用标题给的数据范围思索可能用到的算法,毕竟n2,nlogn,nlogn2,n还是比拟好判别的

  不要一看到数据构造就往线段树上面想,可能会没有那么'费事'

  dp的时分多想想平常本人用到的套路,如最大子串和,最长不降落序列,最长公共子序列,各种背包问题,树形dp思索求树的直径,重儿子,最大次大值等,区间dp的枚举断点,另外复杂度假如不对要思索dp优化(滚动数组或者决策单调性),有时也会用数据构造优化dp

  图论的话普通在比拟简单的状况下只会考最短路和最小(大)生成树,和拓扑排序,tarjan求强连通重量边双连通割点,但图论题比拟难的一点是经过条件间的逻辑关系转化成图论题,这时除了上述算法以外常常会用匈牙利差分约束等算法处理

  字符串自身算法很少,只要kmp,哈希,trie,ac自动机,manecher,因而有时它会和其他算法一同考,如dp;

  想题的时分思想要灵敏点··假如往一个方向想不断没停顿的话就要思索放弃了

  有时分想不出正解时可能暴力就是正确的,本人在计算复杂度时可能思索了许多多余的状况(所以要一定打暴力啊) 

  鉴于在NOIP考场上它算法可能不会考多难··但肯定会用思想难度来补偿,假如能够恰当地用NOI的一些算法来降低思想难度的话能够思索思索

常用套路:

  倒插点/边,乘法转对数,xor的上下位贪婪,均匀数转最长和大于0,加边权求特定汇合最小生成树,拆点,枚举边计算奉献,

代码编辑:

  打代码时一定要集中肉体,不然很容易出错··假如打完代码后还是调试半天找出很多错误阐明打代码时肯定没认真···

  打代码前要想想这道题能否有什么边境条件还没有思索.分类讨论能否全面,有时由于一个边境条件可能就错完了,打代码时也要好好思索,比方mod的时分假如是负数要加起来,用到除法的时分除数能否思索了0,能否需求判别无解状况,有没有可能访问了非法的位置(爆数组或者访问了负的位置,用桶的时分特别留意),有没有可能爆int,有没有可能double写成了整数型

留意本人的算法能否爆空间,用cout<<sizeof()/1024/1024判别判别

假如担忧爆int就开long long,不要偷懒!!

  用mod的时分留意mod透没有

  INF用0x3f3f3f3f很优秀!

  尽量保证本人代码的简约度,能不分类讨论就不要分类讨论(当然是在保证正确性的状况下),有时假如要判别某些边境状况很费事的话能够在边境加上不影响答案的元素,比方在splay的题中我们常常在里面放一个-inf和一个inf··平常就要多参考其别人写的比拟漂亮简约的代码··不然调试的时分可能会晕

留意多组数据下的清0操作

  合理运用stl中的文件,如vector,queue(queue,deque,priority_queue),set,map(这玩意儿有点不靠谱··能手打hash表还是手打吧)

  假如变量很多的话变量名就打长一点,好区分···真实不行打拼音··

  打代码时留意本人能否用到了非法的变量名,像y1,x1,next,index,hash啥的一定要留意··假如平常用这些变量名用习气了的话能够在第一行打一个”改动量名“,这样的话编译的时分能提示本人

  打完后能够加个register进步代码速度,(有可能会re,加完后运转程序看一看)

不要读入剪枝!!!

  看看能否用到了O2优化,用了的话用本人编辑器开O2跑一跑程序

考后检查:

  考完后重点再次检查上述的错误,数组开小没?能否需求开int?能否需求开double?能否需求改动量名?能否需求思索边境?

  最后好好检查文件输出输入,错了就完了··

我是bigbigli!!! 更多内容请关注微信公众号:“大李日志”
原文地址:https://www.cnblogs.com/bigbigli/p/13606943.html