NOIP2016集训总结

来源:互联网 发布:知乎 好听到爆的歌曲 编辑:程序博客网 时间:2024/06/02 14:49

第一次停课训练,感觉比上课舒服多了。
第一场模拟赛就爆0了,原因是输入输出打错了。。。
然后接连几场都垫底,因为没打对拍,总是和估分相差甚远。
后来得分相对稳定了一些,因为有打对拍,这个真的很重要,之前可能我rp比较好,显得这个问题不怎么严重,现在rp更好了,于是就暴露出来让我改过自新。
这段时间学习了数据结构和字符串等专题,收获了许多,但是没有太多的时间去码一码,尤其这些题码量较大,感觉自己实现时会遇到许多问题,这个需要自己找时间去发现和解决。

这段时间积累了一些经验:

rmq求lca不应该调用log函数而应该预处理,这个自己之前的打法一直都是劣的。
寻址优化,例子:
fo(i,1,n)
fo(j,1,n) {
f[i][w[j]]=(f[i][w[j]]+…)
}
最好改成:
fo(i,1,n)
fo(j,1,n) {
k=w[j]
f[i][k]=(f[i][k]+…)
}
且能放在上一层循环的尽量放在上一层
还有改变存储顺序(这个感觉比较神奇,实测的时候试一下什么顺序快)
尽量用位运算
另外栋爷告诉我们,要注意题目所给的条件并充分利用,如题目强调了数据随机,我们就应该想水法?——期望复杂度
还有一个大家都知晓的分解因数的做法,枚举i=1~sqrt(n),若i|n,则同时记录一下n/i即可完整分解,我一直zz的先分解质因数再dfs一下,不过后者做法复杂度低一些,根据题目要求选择。
背包问题的一个套路:f[i]表示费用为i的最大价值,我们可以适当的装换为g[i]表示价值为i的最小费用。
spfa的一个小优化:
if(d[q[j]]<d[q[i+1]])swap(q[i+1],q[j]);

10.31

t1是模拟题,太麻烦而且不太有质量,尤其对于c++字符读入十分不便,于是就懒得打了
t2,比较机智的贪心,没想到,只打了暴力
t3,码农+模拟+无趣=放弃了

这天的题比较奇怪,没怎么训练过这类题型,跪了。

11.1

t1比较简单,基本送了
t2考查操作树,这题难度不大,实现起来也简单,但是我阅历太少,对此陌生,完全没想到,暴力还莫名打错了。
t3题目有些问题,题解是错的,虽然我连题解的做法都没想到,基本就乱做了一通

像操作树这类算法要有一定基础,不然很吃亏

11.2

zz的一天
t1,本来应该切了
t2,本来应该切了
t3难度较大,不会,弃疗了

结果前两题爆0了,就一点细节打错了,不打对拍于是死了。

11.3

t1不难,这次打了对拍,拍出错了(幸好拍了),调了好长时间才改对
t2神脑洞题,只好打70分暴力
t3没时间了

像t1不应该花那么长时间的,不然就有时间起码打一下t3的暴力

11.4

t1水题
t2想到了压位,但压的位数选得不好,测了极限T了,但觉得oj上评测会快一些,应该问题不大
t3没想到优化连边,于是上暴力,暴力又错了(感觉自己暴力能力太弱了)

t2最终只有70,不应该轻易地放过,本来应该是对的。

11.5

t1水题
t2经典套路
t3没想到整体二分,打了60分暴力,结果暴力只有20

t3差了,不过也算近来最稳(问题最少的)的一场了

11.7

t3是道比较容易的数论题,于是先切了它(心情愉悦,难得切了t3)
t1没想到,t2不会
。。。。
t2不会就算了,t1不难的。。。
最后等于题目顺序混乱

11.8

t1,t2,t3都好难,这是一场考验大家暴力水平的比赛
作为暴力水平“突出”的我,又一次垫底了

暴力,是重要的能力,我还需要锻炼

11.10

t1水题
t2没想到正解,而数据弱,结果水了80
t3打了错误的方法,比赛结束后才知道自己错了,而数据弱,结果水了80

虽然这场比赛不具参考性,但至少说明我rp不错啊。

11.11

t1水题,结果zz地细节又错了,wrong成70
t2水题
t3本来应该切了,结果又细节错了,而且没时间拍,就没发现

太不应该了

11.12

t1水题
t2水题
t3想着想着思路混乱(做期望概率需要清晰的思路),然后就弃疗了

t3本是经典的期望水题,哎。。。。

临近正式比赛,又做了几场比较正规的模拟赛,换了个机房,相对有些不适,主要又犯了一些(许多)低级错误

day1

t1爆0,题目其实很水,但我想得更简单了一点,草草打完后来也没去对拍
t2大家都切了,也没遇到什么问题
t3想了挺长时间的,感觉和11.4的t3类似,都是优化连边,但是只剩一个小时实现,结果调试了半个钟,最后过了样例,已经没时间对拍了,结果还是有一个智障的连边错误,又GG了。
最后大家普遍200+,而我就0+100+5(t3给了”impossible”5分)

t1过得太快了,又没有打对拍,与其把t3搞出来,不如切掉t1,再捞t3的60分暴力,稳妥的策略才最优。

day2

t1大家都切了。
t2,今天犯了更低级的错误,循环变量我打重了,然后就死循环了,而小数据又没拍出来。
t3,题目看错了,所以想简单了。

t2这种错误真的很不应该,自己不够认真或是习惯不好,必须要注意。

day3

t1大家都切了
t2想了很久都没想出来,其实中间想到把倒正方形给转过来,但又觉得转过来好像有是二维线段树,联赛题不应该会考这东西,而且转过来还要手推一下,好麻烦,于是放弃了这个念头,一直想别的做法,最后无奈打了个60分暴力,而且还打错了,完全没考虑坐标是实数,而且还有其他的细节也错了。
t3是道机智题,比较难想,我一眼觉得是整体二分,但发现好多东西不会维护,这时心态已经爆炸了,最后打了个50分暴力结果还只有30。。。

t2这种套路,我记得初中的时候就接触过,那时候没有认真消化,以至于埋下祸根。
不要轻视联赛题,有想法不能轻易地略过,暴力要认真细致地打。

day4

t1很水
t2发现暴力在随机数据下表现良好,而且最坏复杂度也不差
t3感觉就是维护一下直径即可,但我不会证明正确性
前两题打了对拍,再打完t3,调出了样例,这时已经11:40+了,感觉也没时间打t3对拍了,然后就坐等比赛结束了,然而事实上接近12:20才交题
结果,t1,t2过了,t3数组开小了,而且有一个zz的地方,我本来应该打j<<=1的,结果打成了j<<1等于j没改变过, czz告诉我在编译选项加入命令:-Wall就会警告这种垃圾语句(从来不知,知识稀缺)。哎,最终t3得分比暴力还低。

最后一场模拟本来有机会AK的,最后的时间没拿来检查,都浪费了。

教训:任何时候应先保证已做的题正确,尤其简单题,错了就GG了,然后再去尝试码复杂的题或是卡常什么的,不要想着做完再对拍,不会的题,打了暴力,也要尽可能保证正确,不要打了白打,比赛要从头做到尾,即使没时间打对拍,也要尽量去检查,用肉眼读,尤其一些细节错误,小数据看不出来,就需要细心才能发现。

除了记住教训,更要放宽心态,要重视每一题,但不要过于在乎结果,模拟赛要认真,正式比赛更要认真,模拟赛要能拿得起放得下,正式比赛也要拿得起放得下,至少自己在这个过程中有所收获,有所锻炼,很充实,也很快乐,足矣。

2 0