A
题意:给两两最小割,构造图。n<=100
最小割都能转化到最小割树上的路径最小权,所以可以构造最小割树
边权从大到小排序,建生成树,最后check合法即可。
证明:
每次加入的是当前最小的,如果已连通则替换一定会使被替换的点对不合法,如果未连通则显然是两个连通块间的最小边不加入则无法满足当前点对。
B
题意:
n<=3000
对于k=n,2边权和-直径
一般情况,假设已知k个点,答案为2虚树边权和-虚树直径
进而可知k个点一定相邻
设f[i][j][0/1/2]表示子树i内选j个点直径端点确定了0/1/2个的最优解
这样就可以在转移的时候知道u-v的边走了1/2次
子树归并转移(O(n^2))
C
题意:字符串S,Q次操作:前/后加字符,撤销加字符操作。求每次操作后S中最长回文串长的和。强制在线。n<=1e7
发现答案增量只会是0/1/2,可以用hash直接check前后缀
考虑维护hash:
类似莫队维护指针写了下,常数很大就弃了。。。
另一种做法是通过类似h[i+1]->h[i]找到h[i]->h[i+1],当然此时h[i]中没有包含真实的s[i+1],而是我们钦定的,大概相当于错位?
挺迷的但是是对的。