ZJOI-2017 R2 游记

  来说说考试(之前的事明天再补):

  开始看了一遍所有题目,感觉第二题最可做的样子(ZJOI R1树状数组,HNOI splay 你们西方什么题我还没见过,淦!),大概感觉了一下所有题。

  T1:k=1直接输出答案即可,然后后面的规律不是那么显然,感觉会是个高阶状态DP,但是状态都不是很会设的样子。

  T2:暴力20分按照题意写就可以了,应该感觉是用个数据结构维护一下树的划分保证log的复杂度,还一个想法就是莫队,但是套上倍增复杂度就不是很对。想了想莫队写u=1的比较兹瓷。

  T3:一脸不可做的样子啊,甚至没有想到平方级的做法。暴力直接做,但是因为他查询的时候所谓的后缀是以多个不同的位置为结尾的,所以不修改的那个20分我也不是很会。

  吼,毕竟ZJOI R2,应该也不会很简单呐,暴力先写了,这样子在不到1.5h的时候拿了40分。

  开始猛淦第二题,这个举动消耗了我大量的时间,在想这个题的时候我一下子在想正解,一下子又在想u=1,一下在又在想r=n的情况,思路比较的混乱,好不容易用莫队写了个20分的部分分出来,然后发现已在下的卡常水平并不足以把这个东西卡进2s,很无奈的又卡了很久,这个时候已经3h了,无奈先放下,思考了一下人生,发现旁边的那位pascal小哥一盯着T1大样例前面的点在看,想起来k=2的时候应该是有点规律的,开始怼T1,想了想如果不考虑最终状态的话答案比k=1乘2就好了,现在考虑如何变成最终状态,在最优步数的情况下的最终状态是可以确定的,就是从上至下${12121212...21}$,也就是最下面的哪一对盘子翻转了,那么和最终的状态从下至上进行比较,如果期望的最终状态不一样,就说明需要翻转这一对盘子,那么就相当于把上面的一堆移走,然后再翻转,这样子额外的花费就是${2^{k-1}+2}$,k是不同的位置然后第k-1个位置就会翻转,所以O(n)扫一遍就可以了。测了一下大样例一遍过了k=2的,吼啊!70分了。时间来到了3.75h,感受了一下k=3的,翻转还是和k=2差不多,但是是三个二元组互相转化,那么到了和最终状态比较的时候很可能是和另外的4个状态不一样,这样子可能就需要决策了,那么应该可以爆搜决策然后DP.大概在4h的时候写了出来,一测试大样例发现过不去,调了调也没有弄出来,无奈放弃。

  4个小时又10分钟,还只有70分,还好每道题都过了大样例应该是不需要拍的,开了O2再测了一遍所有题大样例,突然发现最后一题开了O2之后跑得奇快,输出时间发现只要3.5s,我写的是个最不利三方的啊(最后出考场和大佬讲了一下发现我那种break之后应该是两方带根号的)再看了一下数据,欸?!这就是随机数据的那部分20分的数据啊,有救!大力优化了一下常数,把vector改成数组然后就跑进了1s,感觉30分应该比较稳了。

  最后25分种,90分,感觉要滚啊...再看T2 r=n的数据发现从后往前一个扫描线扫过去,这些点的lca是可以不断合并的,那么题目转换成:维护一个数据结构,支持树上把一个黑点变成白点,白点变成黑点,查询任意一个点到所有黑点的距离之和。额,HNOI2015开店啊,还剩20min,一股深深的无力感涌上心头...然后检查其他题目去了,最后没什么问题就交卷了。


  考完之后和pascal小哥交流了一下,听说他T2写了60呐Orz(但是别的题都没怎么写?)最后成绩他也还是60分,Orz...我做这种题的能力还是有待提升呐。最后也不出所料获得了90分,再看成绩果然还是不是很好看啊...虽然说再给我30min我就写得出T2的另外20分,我的卡常技巧再妙一点又可以多获得20分,但是最终都还是没有,只能是说技不如人呐/XD ,国赛还是得拼他一把,给自己加油一番QwQ

上一篇:js实现方法的链式调用


下一篇:MFC中设置对话框/窗体大小固定