GDOI2017总结
By Semiwaker
总述:
分数
Day1 235
Day2 175
Day3 70
状态
Day1状态较好;Day2第一题居然出现了错误,有点头脑混乱;Day3完全不知在干什么。
题目
Day1
T1
题目大意
给出多个个字符串,按顺序进行字符串替换操作。
每一次给出一个替换规则a->b,从左到右匹配字符串中的a换成b,新生产的字符不参与当次替换。
题解
直接KMP。
考试状态
一开始看错题目,以为所有替换同时进行,只是优先做前面的,写了个AC自动机然后发现不对劲。应该把样例都看完再做的。耽误了比较多的时间。
T2
题目大意
给出一棵树,每个点有一个点权。对于每一个点x,求除了子树x之外的部分的mex。
题解
考虑哪些子树会把所有的 0 都删除?
所有的权为 0 的点的 LCA 到根的路径上每一个点都会,其他都不会。
类似,全部 1、2、3……都是如此。
那么我们在 0 的 LCA 标记上一个 0 , 1 的 LCA 标记上 1……
然后考虑某个点x的mex值,显然是它子树内最小的标记。
DP即可。
考试状态
面对5000字题面我选择看最后一段。
虽然很纠结是图还是树,但我觉得反正图不会做,就当它是树好了。
从A了这题这一点来开,这种心态还是有可取之处的。
T3
题目大意
给出一堆Trie,每次询问一个集合的最长公共子串。
题解
在Trie上建广义后缀自动机。
由于出题人卡在线(也就是按照 DFS 序建),所以要用 BFS 序建 SAM。
考试状态
写后缀数组的TLE了。
我考前还想着不会考SAM来着。
T4
题目大意
问正n边形三角划分后,能数出多少k边形?
题解
先选出一个k边形,然后再三角划分。
方案数为选出k边形后,切出来每一个部分分别三角划分的方案的乘积。
显然三角划分的方案为卡特兰数。
实际上就是卡特兰数的生成函数的k次卷积的第n-k项,再乘个k变形的三角划分方案数。
k次卷积可以用FFT+快速幂搞定。