NOIP2016集训总结

preface

进入高中了,第一次停课集训,一停就是3个星期。做了很多场模拟赛,接触了很多题,也发现了许多问题。

第一周

10.31

看完第一题,发现这是属于那种考细节的模拟题。搞这题的输入、输出调了差不多一个小时,结果因为本机和评测环境不一样,输入本机不会错,但是评测机上挂了80分。
第二题看出来是贪心,但是没有想到策略,结果又在死磕。
第三题看完就发现是恶心的搜索题,最终弃掉了。
最后70分

11.1

这一天状态有所回升。
第一题想到了分开处理,然后拍过没有错,最终切了。
第二题却没有想到可以直接暴力上,回到历史版本的操作其实等于操作构成一棵树。结果30分暴力也挂了。
第三题正解是伪的,只有50分数据是正确的。50分也拿下了。
最终得分150

11.2

这天的前两题感觉不会特别难。
第一题的贪心策略想出来了,但是没有拍,感觉有点虚。
第二题经过分析,利用了一下xor的性质,然后也想出了正解。但是数据范围到达了200000,我自信地打了非递归,结果爆栈挂了2个点。后来打人工栈切掉了。。。
第三题是TC上搬的期望题。考场上50分算法不知道哪里写错了,结果只有0分。听完正解后发现这是好题!

11.3

这天是栋爷的题,被虐得体无完肤。
第一题是复制一份原序列,然后正反扫一遍,用单调栈维护。但是我在这题上卡了3个小时,最终还只打了60分。
第二题大卡常题(而且第一次见到用生日悖论来优化程序)。考场上只花了10分钟码了70分(和第一题的强烈反差)。
第三题又是期望题。看完题就想到了20分大概怎么码,但是时间花在了第一题上。。晚上本来打算改好第二题来改第三题,结果卡常一晚上只有85分,导致怠惰势力爆发。

11.4

今天的状态又一次回升。
第一题就是直接模拟。我看了几次来确认我是否看错题。。
第二题看似不好做,不过可以首先枚举路径中间的两个点,然后直接把度数乘起来,减去重复的。这个压21位就可以过了。这个思路我最初是在CF上一道题见过,所以没想多久。
第三题的关键之处在于优化连边,然后直接bfs。但是没有想到分治或题解法。感觉思考还是要更灵活先。

11.5

在比赛中已经想到了前两题的正解了,但是由于第一题没有拍,WA了5个点。第二题没有开long long,挂了4个点,但是这个是对拍不出来的。而且爆long long的部分不能从输出中看出来。

第三题拿掉了20暴力分和另外40分特殊数据。因为这两天的题比较简单,让我感觉算法不会很难,所以没有往点分治的方向想。

第二周

11.7

这一场几乎垫底,不是一周的好开端啊。。。
第一题组合数+矩阵乘法+快速幂。方程什么的都推出来了,但是看错了模数,导致拍的程序也一起打错模数,最终只有20分暴力分。
后面两题都拿下了暴力分。第二题是优化过的状压,第三题是莫比乌斯反演,但是考场上没有反演出来。改题的时候发现题解法相对有点麻烦。

11.8

第一题我和其他人的方法不一样。我是给DAG构了一棵生成树,然后分类讨论计算答案。感觉是没有问题的,但是整场没有调出来。
第二题又是可以直接暴力,但是考场上不会证复杂度,只好打了个比较暴力的暴力?!
第三题是一个比较神奇的贪心,下午讨论时大家基本都会了。

11.10

//前一天运动会没有做模拟赛,今天原本轮到高二,结果因为下雨推迟(心疼)

第一题离散化一下即可,比较水。
第二题用了单调队列+线段树优化DP,由于一下一个数据结构套另一个数据结构,花了不少时间。
第三题是今年NOI模拟的原题,考场上思路前部分和正解基本相同,后面的不会,就打了个二分,然后超时。
然而数据开始时比较水,大家各种暴力拿高分。最终出动机房几个人后卡掉了许多人,然后被我上到了rank2(这几天第一次这么高)

11.11

第一题又是贪心,果然贪心是noip的热门算法啊。
40分的暴力分n,m都特别小,我人工出一个数据都比暴力分的范围大。。。
第二题有一个关键的思路是:模拟kmp的过程。(我之前出题的时候也想过类似思路的题)。然后就很容易列出DP方程了。接下来再预处理一下转移。
拍完前两题才花了1h,然后有充足的时间搞第三题。结果第三题分析一波后,发现又是一个容易想的树形DP,结果2h就切了三题。。。

11.12(校庆节模拟)

第一题推了5min搞定,这一次我没有看错模数了!
第二题看起来又是字符串相关,然而事实上这道题和字符串没什么关系。。首先状态压缩一波,然后贪心匹配即可。
又是1h拍完前两题,有充足时间搞第三题。但是第三题乍一看和以前做过的一道五校联考的题很像(当时我还给现在初三的同学讲过这道题),推一下方程后发现思路就是一样的。但是发现一个问题:求答案的时候有很多细节。所以两次一拍就错,调试没有前一天顺利。

第三周

终于到了考前最后4场模拟,结果这一场出现的问题是最大的。

11.14

这几天都是换机房模拟。事实上三题都很快想到正解了,但是各种失误。
第一题是贪心找一个以元素n结尾,相邻两项差为1的子序列,但是贪心失败,并且没有拍过。结果爆0
第二题是弄出一个偏序关系然后dp,稳稳地切掉了。
第三题的优化连边+去掉无用点,我在考场上都想到了,而且考后改出来在oj上交,跑得飞起。但是拍过后仍然WA,只有5分。

11.15

经过前一天后乖乖地去打对拍了。但是。。。
第一题我的方法没有问题,但是拍过后还是爆0。原因是我出的数据太随机了。
第二题利用题目的条件,把询问拆成两部分,然后用线段树分别维护。这题就还能切。
第三题在考场上想出来了,但是在一些细节上磕了比较久,并且暴力还打错过一次。最后时间不够,只拍了20多个数据就交了。然后是得到10分。
又是三题想出正解,然后在各种因素下挂掉。

11.16

不会像前两天那样挂了。前两题都想到了正解,然而第二题大概因为pdf显示问题缺了1个0,然后只有60分。第三题是51nod原题,我之前看的时候没想出来,然后点了收藏(日后再看吧)。结果。。。。

11.17

最后一场模拟了
前两题还是很快想出来了,在第二题的优化上花了一段时间,后来又因为数组开小,拍出错后调了不少时间。然后第三题没有想到用直径来做。

出现的问题

  1. 想题的时候,如果思路不对,可能会一直死磕,而不去暂时放弃去做其它题或想部分分
  2. 对题目的条件、数据还不够敏感,这样可能会导致模数打错、数组开小,或是递归爆栈的问题。
  3. 看到题目较麻烦的时候,会去避免在这道题上花时间,而不去想部分分。
  4. 代码有时候打得不够优美,常数比较大,如果在比赛中,会在CCF的老爷机上吃亏,被卡常
    接下来是较大的问题
  5. 没有人工构造几个相对较特殊的数据去卡自己的程序
  6. 对拍时数据过于随机,没有测很多特殊情况的数据
  7. 有时候对拍会打错

总结出一些要注意的地方

  1. 题目的一些小条件、数据范围、时间空间限制很重要,一定要仔细查看
  2. 对拍时一定要出特殊数据。还有就是给正解出大数据,检查是否会出现爆类型、爆数组或爆栈的问题
  3. 以单词作为变量名时,尽量开头大写,或者挖掉一个字母并使得不会有歧义。避免在linux下会出现编译问题
  4. 没有思路的时候,可以从部分分入手
  5. 不要把简单题想复杂,比如出现所谓“数据结构学傻了”的情况
  6. 比赛前要打两份模板:一般代码的、出数据程序的。其中前者的头文件和define尽量全一点。

最后

所有问题都应该引起重视。
比赛的时候不宜太紧张,但是适当的紧张还是要的,这样可以让自己思维转得快一些。
每一部分都不能松懈,即使在赛场上遇到不利情况也要沉着冷静。
考完一场,就要着眼下一场,过去的已成定局,最重要的永远在下一场。
心态要调整好,放松还是要的。(比如跟着栋爷去面基一下

祝自己NOIP2016 RP++

你可能感兴趣的:(杂文,比赛总结)