作为一个从初中就开始学信息的蒟蒻,自然要去提高组了~~~
比赛前day1
跟平常一样在机房颓废着,上午在洛谷看到了站长大人的忠告后,看了看模板题,发现没几个会打的(正常)。
下午想一想发现自己的dp垃圾的不行不行的,于是去看了看自己以前写的dp,顺便写了几道普及级别的dp,有几道还不怎么会写,感觉自己要完蛋了。。
晚上早早地就睡了,一直在床上回忆模板,半夜一点左右发现自己主席树模板不记得了,方的要死,翻身下床看了一波,总算可以安心睡觉了。
day1
早上在车上看了看昨天晚上写的vim配置和Linux下的对拍(比windows下的好背多了),顺便背了一下前天刚学的神器pb_ds(联赛用了好开心,hhhhhh)。
再日常祭天(alb)之后就进考场了。
干坐半小时后,题目终于发下来了,先用半个小时左右把vim配置打完了,调了好久一直re,最后发现少打了个分号。
好不容易弄好后开始看第一题,本来我以为提高组第一题会像以前水的,看了眼样例,以为是a+b+1,结果大样例不对,瞬间崩溃。
后面我发现,可以把大数y写成kx+b的形式(x是小数),然后考虑余数b对答案的意义,因为b只有大数可以提供,所以要答案尽量大的话,b最多可作出(x-1)的贡献(再多的话可以用小数来表示),但是当有(x-1)个b时,必定会出现k*(x-1)个x,所以再减去一个x就必定凑不出来了。写了个背包对拍了一波发现没有毛病,大概半小时解决了第一题。
看到第二题一开始觉得不可做,字符处理太麻烦了,又看了眼第三题发现第二题貌似easy些,就硬着头皮暴力模拟了,开个栈维护一下变量名,记录一下最大时间复杂度,最后没有err的话就与答案比一下即可。
注意几个细节:
1.要考虑 “F n n”的情况。
2.要标记进不去的循环,在这个循环出栈前所有的循环都不会对答案作出贡献。
3.会有多个独立的循环加嵌套,我们需要记录时间复杂度最大的那个。
不知不觉写了一百三十几行,感谢大样例测出了程序几个小bug,第二题也顺利解决了。
来到第三题,还有一个小时左右,先写了个暴力搜索(考场上以为有50分,出来后发现只有十分的,结果ccf给了30,happy~~)
想了一会觉得就是个缩点+拓扑dp,于是打了个缩点,结果重新建图是出毛病了,又一想发现我想的dp不好写,于是就放弃治疗了。
于是第一天 100+100+30
出来发现机房几个dalao第一题写的拓欧,第一题是真的坑。
第一天感觉还行,只是没有树剖题,没意思
day2
前天晚上终于睡好了,今天在车上没有睡觉。又看了看配置和dp,就进考场了。
拿到题目,t1比昨天水多了,看两眼秒掉了,不过好像极限数据有坑,会爆long long,没考虑到,幸好ccf没卡我(6666),有惊无险地过了。
看了看t2,按照套路,先打了个bf,发现dfs打错了,小样例都过不了,果断删掉了。看了看数据范围,觉得和去年愤怒的小鸟一样,果断写了个状压dp,发现大样例过不了,比答案小(生无可恋,原地爆炸。。。),又读了读题,发现点毛病,又开了个数组记录了一下树的状态。过了大样例,就没管了。
t3一看就不会写正解,先把前三十分骗了,看一下特殊数据发现只有一行的情况可以塞到平衡树里,每次询问第k小就行了,开心的把pb_ds搬了上来,搞定!!!
之后一个多小时一直在思考t3,试了树状数组,差分之类的,但没搞出来,day2就这样结束了。(后来出来机房dalao跟我说询问很少的那20分也好骗,当时没想到)
第二天最后 100+100+40
后续
出来之后听同学说不能用下划线开头的命名空间,想起自己的__gnu_pbds,感觉自己药丸。
回到学校想了想发现宝藏这题好像并不具有最优子结构的性质,完了完了
回头把day2t2交到洛谷上结果过掉了,还跑得贼快。(事后发现出错率极低,随机个几千组才会错一组,无法理解)
总之这次noip达到了自己的预期目标(400+),继续加油。
原文地址:http://www.cnblogs.com/dengyixuan/p/7886468.html