虽然可能想到的人不多,但为了有和我一样脑回路新奇的后人少走弯路,还是记录一下。
如果这算是讨论区题解,那我自行删除。
我们设 fi,j,0/1,0/1 表示以 (i,j) 路径为根时端点 i,j 有没有被选择情况下两点子树内的答案,同时枚举回文子序列的中心是谁,那么转移时需要枚举以另外一个端点为根时当前点的儿子。
这样看着复杂度高达 O(n4),但是可以尝试进行一下分析复杂度。
首先最外层枚举根肯定时无关紧要的,因为我们记忆化之后状态数为 O(n2) 量级。但是枚举根作为奇回文串中心是需要枚举两个儿子记搜,这样显然是 O(∑deg2)≤O(n2),于是只用考虑转移时枚举儿子的复杂度。
当枚举转移点对 (x,y)→(to,y) 时,其本质是在枚举树边,也就是对于一条边仅会有 O(n) 中转态需要通过他转移,所以这一部分总复杂度仍然是平方级别的。
因此,这种看起来不靠谱的做法实际复杂度是 O(n2) 的,其是本质与题解区别不大,但是复杂度并不太显然。