Megumin's Training (补题当然是由队友补喽)
2014-2015 ACM-ICPC Pacific Northwest Regional Contest (Div. 1)
B 4
C 最小割 以每个方块为点,S与最外围所有点连边,其中在顶点处的点连3边,不在顶点且在棱上的点连2边,其他点连1边。好点与周围六个方向点连1边,坏点与T连inf边,求最小割即可
F 矩阵快速幂+状压 考虑递推的时候第i列会影响到第i+2列,所以我们将用第i,i+1列推出第i+1,i+2的状态转移矩阵做矩阵幂,两列最大的开销也就\(2^8*2^8\),注意这题模数的值,除此之外这题,我本地RE好久,第一个是矩阵要在全局声明,第二个是讲矩阵里面的数组改成int,运算的时候乘法需要加个long long,这样矩阵的大小本地可以开到\(300*300\)左右,第二点查了半天一直不知道为什么会RE
G 博弈 观察得到影响最后结果的有两部分,一部分是包括1的区间[l,r],还有一部分是与1的区间隔开的剩余的数(即l-1和r+1的数被选掉了),前一部分可以不断记忆化搜索下去,后一部分随便怎么选都可以,搜索过程遵循前继和后继规则就行
I 线段树+dfs序 题目就是给两种操作,一个是询问子树的最大值与最小值之差,另一个是讲子树的权值一起增加,把点按照dfs序hash线段树上,然后就是线段树的操作了
J 9
K dfs 39
2014-2015 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2014)
B 5 后缀数组
C 7 http://paste.ubuntu.com/25289843/
F 数据结构 先来小小的总结一下,线段树可以搞区间和,最值,但是对于中位数,第k大,众数,线段树表示无能为力,当然后者有好多其他更复杂的方法去解,但是也可以暴力一点分块,这题是求中位数,当然类似像第k大一样先二分中位数,然后累加每个块有多少个数小于等于二分的值(即再次二分),然后再判断,这题比较特殊就是:每次都是区间+1,说明每次中位数的值要么不变要么+1,所以省去第一个二分枚举中位数的操作,直接分块(块内排序),复杂度为\(O(n\sqrt{n}*logn)\)
G 2 DP http://paste.ubuntu.com/25289869/
I 0 http://paste.ubuntu.com/25289871/
2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15)
题解: http://cerc.hsin.hr/2015/tasks/cerc2015_presentation.pdf
C 1 very hard 线段树 + 扫描线 + 差分
E 9 medium 图论
F 常数部分与其余部分分开计算。可以发现,其余部分是很好计算的,关键是常数部分。考虑每个格子对最后结果的贡献,我们可以得到一个和式,这个和式是可以通过FFT或者NTT进行计算的,但这傻逼题目给了一个辣鸡素数,导致不方便用NTT进行计算,便考虑其他方法。事实上,这个式子是可以递推的求解的,用到了一个组合恒等式。然后递推求解即可。
G 2 hard
I 计算几何,被无限卡常,不过算是有点收获。虽然计算几何模板具有非常强大的功能,但是存在一个问题,速度很慢,因此,对于使用频率高的几个小函数,必须加上inline来提升速度
[Megumin的代码] (代码什么的,当然是不存在的呀)