SCOI2015题解 && 考试小结

Day1:

  第一题:裸地二分+网络流:二分答案,连接将每行每列拆成点,对于满足答案的格子行列连边,看是否流量是否大于t即可,可惜第k大看成了第k小,然后100分就没了。

  第二题:倍增,考虑贪心算法,就是考虑选了当前的线段,下一次选的必定是左端点小于当前右端点,右端点尽量靠后的线段,因此在化环为链后,预处理每一个线段的后继状态,当我门选了一条线段后,剩下的选择一定按照刚才的思路选择,所以像lca一样倍增处理每个线段跳2^i次后的位置,对于每一个询问,O(logn)时间向后跳直到覆盖所有区间。

  第三题:半平面交,(考场上没想出来,然后想答案区域一定是一个凸包,所以用随机撒点,维护凸包,套模拟退火,本以为至少能搞到50分,结果10分就把我打发了)考虑每两条边,如果已知他们之间的面积关系,那么由三角形底之比,可算出高之比,满足条件的就是一个类似于角k等分线类似的东西的一侧,进而可以看出这是一个半平面,上半平面交即可。

Day2:

  第一题:DP,虽然不是魏总说的变态数位DP,但是还是没有做出来,不得不承认我的dp功底实在是太弱了。考虑dp[i][j]表示从第i号点开始遍历子树,以j节点结束,所需要的最小代价是多少,由于这是一个完全二叉树,所以dp数组实际的状态数是O(nlogn)级别的。在来看转移,直接枚举左右子树的结束结点,同样算下来均摊转移复杂度O(logn)【你知道什么是完全二叉树吗?】

  第二题:随便怎么用set什么的维护一下就行了,听大神们说直接找最远点以及旁边三个零区间,去max就行了,考场上脑抽,写了一个二分套线段树。

  第三题:由于危险任务一定是某一时刻之前开始收集情报的人,所以可以树链剖分+主席树维护,O(nlog^2n),但是当时没有想到主席树可以化为静态,所以写的O(nlog^3n)的算法,考试的时候实测还是挺快的,也就没多想,结果交上去T完了!!!真是不知道神大的笔记本有多么良心,还有数据竟然没有一个小点!!!

  oi生涯中第二次也是最后一次省选就这样悲催掉了。

    Day1 0(T1)+100(T2)+10 Day2 0(T1)+100(T2)+0(T3)

  有趣的是两天爆零的两道题正是我考完最有信心的两道题。

  还好两天都有额外的分来保证死的不会太难看,NOIP的成绩也保证了我能进省队,但是肯定与A队无缘了。就姑且当它是一种关于仔细审题,仔细计算时间复杂度的警告吧。

  不就以后还有CTSC和APIO,又得好好准备一番了。

上一篇:《Linux内核分析》课程总结


下一篇:Eyeshot Ultimate 学习笔记(2)