GDKOI2015 总结

来源:互联网 发布:at24c02数据手册 编辑:程序博客网 时间:2024/05/20 11:46

GDKOI2015 怒打一个酱油拿了二等奖。。。250分。。。

Day1 

6:30起床吃完早餐在门外小卖部买了咖啡和巧克力(最主要都是用来放在那不吃= =)就进考场啦~

前15min

看第一题,先是想到了SA和SAM(= =过专题的后果?)然后想到了找两个回文串的算法,最主要是卡在那个环会旋转的地方,感觉不太好做然后就去想下一道题了。

第二题,看完题目就想到了网络流,建模还算靠谱,后来打的时候也挺顺利的。

然后看第三题,没什么特别好的头绪,想过在一颗差若干个叶子的完全二差树上树形DP,看起来不太好做,打算等下暴力看有没有特殊的规律。

看第四题,发现主要是个数据结构题,看上去就像是树链剖分,也不太好做。然后想到教主讲过这一类题目的比较通用的做法,仔细想了一下可以做,然后就回过头去看第一题了。

前45min

开始仔细切第一题,然后发现把这个串copy一遍以后直接找一个长度为n的回文串就好了。然后啪啪啪就写完了(就写了15分钟=A=结果跪了。。题外话:刚才看到了CSDN上的一句话“代码是很简短,可是省下来的时间去干嘛了呢?”)错在了Manacher的主过程中利用过去点的信息时直接Copy了中间点的信息而不是对称点的信息。。。写完以后想到上一次比赛在第一题上花费了大量的时间以至于后面的题没时间做,感觉拍不好写就不拍了(事实证明后来跪掉了,而且现在仔细想了下这道题的拍写出来应该也就只用10min左右,比写出这一道题的时间还短。实现方法是随机生成一个串,然后随机这一次应该是还是不是,不是的话直接输出这一个串(一般生成出来都不是回文串)。否则把这个串镜面对称一下,随机地确定是否在正中间加入一个字符,然后随机旋转一下输出)这样应该就可以拍出来T1的错误了。(T1怒丢100分)

然后去看T2了。这道题在看题的时候就想好了建模,然后人脑跑了一下样例感觉比较靠谱很快就写出来了,然后根据经验这种分层图dinic跑的比较快选择了dinic这个比较机智(据说有人SAP被卡了)。网络流真心不好拍,人脑生成了几个数据还算靠谱,就AC了(这里有段小插曲。在后来评委说了long long用I64D,然后才发现这一道题要用long long,这个是做得不好的地方)。

然后去写T3。T3是个奇怪的题目,先写了个暴力,然后打了几个表没有发现什么规律,努力地优化了几下还是只能跑到N=130左右。。感觉做T4比较靠谱然后就去做T4了。

时间主要花在了T4上面。

因为在考试之前就找到了这道题的主要方向,然后果断开打。其中问了评委栈大小,他说默认(= =考完试后刚刚亲测了一下,发现。。。)

这个以后要记住,最简单的递归可以到20W

打完大致框架猛然发现有很多细节问题要处理,最主要是一开始开打的时候太冲动了没有仔细想好每种询问怎么做,要维护什么,这个是要注意的。做数据结构题千万要估计好时间,万一不能切就果断打暴力吧(事实上先打暴力会比较好,在对拍时会很有用。)结果这道题没拍,也没分,亏了。

结果就130滚粗啦啦啦~

第一二四题大致上就是考场上的思路了,主要是第三题的正解比较巧妙。A的人主要通过考虑连进一个点的边们和连出一个点的边们,事实上只会有两条。而这两条的关系就是只选且必选其一,考虑到这个就比较有搞头了,但后面的模型转换更巧妙。他把点x和点x+N/2合并成一个点处理,因为他们两个的出边对象是一样的,且同一对象选且只能选一条边,干脆合并成一个点,跑一遍贪心最大字典序的欧拉回路就可以了。

顺便贴求欧拉回路的方法

对于欧拉图,从一个节点出发,随便往下走(走过之后需要标记一下,下次就不要来了),必然也在这个节点终止(因为除了起始节点,其他节点的度数都是偶数,只要能进去就能出来)。这样就构成了一个圈,但因为是随便走的,所以可能会有些边还没走过就回来了。我们就从终止节点逆着往前查找,直到找到第一个分叉路口,然后从这个节点出发继续上面的步骤,肯定也是可以找到一条回到这个点的路径的,这时我们把两个圈连在一起。当你把所有的圈都找出来后,整个欧拉回路的寻找就完成了。

寻找欧拉回路时,起始节点是可以任意选择的。如果是有基度顶点要寻找欧拉通路,则从基度顶点出发就好了,上述步骤依然有效。

Day2(这场心好累,简直不忍回忆)

T1 求二分图上最大化点权和边不相交的匹配。这种题目之前有经验是把一边的点排序后处理,很快就想到了树状数组来优化这个Dp。啪啪啪敲出来了,昨天见过鬼今天果断小心翼翼地拍了第一题,结果果然拍出了错误= =。问题是在同一个点的不同边的转移转移顺序会相互影响,以及实现Dp时把自变量搞混了,本来是以另一边的点作为自变量而写的时候先入为主地写的是这一边的点,然后改过来后就AC了。(感觉对拍的数据生成器数据范围应该要键盘输入,不然每次都要改然后编译太麻烦了,以后要学会,然后要学会程序从Terminal中获取参数的方法)

T2 一道很有趣的题目。考场上先写了个暴力,然后开始想各种奇怪的做法。先是想了一个把一个关键字排序,然后将一个队列塞满后就把另一个国家的人都填充到这里面,然后越打越不靠谱,最后拍出来是错的。然后想了双三分(脑抽了离散化一下就好了)两个队列的分数线,拍出来发现不是单峰函数。结果正解是。。。枚举分数线然后填充。。。心好累。。。我怎么就没想到把这两个思路结合起来呢。。。。。= =。。。结果这道题花了大量的时间,却只拿到了暴力分。反倒是别人写的各种奇奇怪怪的构造,有的还是明显是错的。。居然拿了50+分。。。心真的好累。。。事实证明千万不要只交暴力,纵使你的暴力连样例都没过,请相信数据的简单性23333333

T3 又是一道考手速的题目,但也很拉开分数,思路并不难,倍增维护。但是第二题浪费时间太多了,没时间写就交了个暴力。以后还是要练一下这种考手速的题目。

T4 好不容易看懂了题目,感觉暴力分也不是短时间能写出来,就赶紧去打第三题了。结果原来是个数学题。。最核心的部分是找循环节。学会以后再补贴上来。

然后120滚粗。


GDKOI就这样结束啦~今后要努力的方向除了上面提到的,比较重要的是练手速。对拍真的要好好练练了,不然省选准备好收拾被铺滚粗吧。。

Just keep on.

0 0
原创粉丝点击