建回文自动机,注意到一个回文串是可以通过一个长度小于等于这个串长度的一半的回文串添上一些字符然后复制得到的,也就是在自动机上向fa走,相当于treedp 每次都走显然会T,记录一个up,指向祖先中最下长度符合要求的回文后缀,这样每次找最多跳一次,所以是O(n)的,还有child的清空动态的做,也就是 ...
分类:
其他好文 时间:
2018-11-25 11:38:22
阅读次数:
185
首先只有lcp(i,j)需要考虑 因为SAM的parent树是后缀的前缀的最长公共后缀(……),所以把这个串倒过来建SAM,这样就变成了求两个前缀的最长公共后缀,长度就是这两个前缀在parent树上的lcs对应的最大长度dis 这里用treedp解决即可,就是合并一下size cpp include ...
分类:
其他好文 时间:
2018-11-23 22:28:49
阅读次数:
226
没考虑可以连着两个不选……直接染色了 实际上是基环森林,对于每棵基环树,dfs找出一个环边,然后断掉这条边,分别对这条边的两端点做一边treedp,取max加进答案里 treedp是设f[u]为选u点,g[u]为不选u点,然后随便转移一下就行了 cpp include include using n ...
分类:
其他好文 时间:
2018-09-12 10:12:55
阅读次数:
159
这题以前好像是做过的。 很容易发现就是treeDP了。 然后需要一点贪心的思想,对于当前以x为根的子树,删除任意的子节点,实际上答案都是+1,所以可以排序一下,然后先删那些值小的点。 ...
分类:
其他好文 时间:
2018-03-04 16:10:14
阅读次数:
149
2103: Fire 消防站 Description Input 共N+1行。 第一行有一个正整数N,表示区域的个数。 接下来有N-1行,每行两个整数u、v,表述区域u和区域v之间有一条道路。 最后一行有N个正整数,第i个正整数表示区域i的权值W(i)。 Output 包含一个正整数,为最小的S(x ...
分类:
其他好文 时间:
2018-03-04 11:54:19
阅读次数:
238
一眼题,就是treedp,第一问很好做啊!看来是道水题! 第二问?两维咯,一维点,一维非偏爱个数或者有多少个偏爱咯 一眨眼一上午,准备精A。。。C,三维!? 好吧,为啥WA10+!? 还有mod!还有判断联通! 说多都是泪。。(本来想用自己的努力AC不被D的) ...
分类:
其他好文 时间:
2017-10-11 14:12:54
阅读次数:
167
题目地址:http://codeforces.com/contest/461/problem/B 题目大意:给一棵树。每一个点为白色或黑色。切断一些边,使得每一个连通块有且仅有一个黑点,问划分方案数。 算法讨论:TreeDP。f[x][0..1]表示x所在连通块有0/1个黑点。设y为x的儿子,则DP ...
分类:
移动开发 时间:
2017-05-07 10:10:41
阅读次数:
194
传送门 圆方树预备知识。 首先搞出DFS树,然后设状态$f[node][OK][OKanc]$为别表示在当前点选/不限和环顶节点选/不选。 剩下的就是TreeDP常规的东西。 P.S.课件上说第一个状态设为父亲的,亲测没有设成自己来得方便 ...
分类:
其他好文 时间:
2017-02-12 11:12:15
阅读次数:
253
思路:建出虚树然后treedp即可,f[i]表示将以i为根的子树与根隔绝的最小代价,f[i]=min(val[i],Σf[son[i]])(val[i]表示将点i与根隔绝的代价),需要注意的是如果i就是关键点那么f[i]=val[i]。 ...
分类:
其他好文 时间:
2016-10-24 13:24:13
阅读次数:
161
校内OJ上的题,刚开始做的时候以为是道SB题10分钟就能搞完.. 然后准备敲了才发现自己是个SB.. 刚开始以为是个很裸的TreeDP,然后就只设了两个状态,但是怎么想怎么不对。复杂度好像要爆炸。改成左儿子右兄弟好像根本无法转移.. 搜了搜题解,发现不用改成左儿子右兄弟,把两个状态改成三个状态就行了 ...
分类:
其他好文 时间:
2016-09-18 19:24:00
阅读次数:
146