rt,众所周知第二维和size相关的树形背包做卷积转移可以做到O(nk)或者nk同阶可以做到O(n2),然而我一直以来的写法都是这样的:
size[pt]+=size[child];
for(i=min(k,size[pt]);i>=0;i−−)
for(j=0;j<=min(i,size[child]);j++)
dp[pt][i]+=dp[pt][i−j]∗dp[child][j];
这样的复杂度是错的……我在这题的第9个点上T了半天,后来自己造了条链把我卡了……真正的写法应该是在合并pt与child两棵子树的时候进行min(k,size[pt])∗min(k,size[child])次循环,这种写法则是min(k,size[pt]+size[child])∗min(k,size[child)次循环,在链上就被卡成O(nk2)了……
话说我之前做的所有这样的题我都是这么写的,但是竟然直到今天才被卡掉……