社区讨论

细思极恐……

CF1097GVladislav and a Great Legend参与者 6已保存回复 13

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
13 条
当前快照
1 份
快照标识符
@m4nk78xn
此快照首次捕获于
2024/12/14 10:29
去年
此快照最后确认于
2025/11/21 07:01
4 个月前
查看原帖
rt,众所周知第二维和sizesize相关的树形背包做卷积转移可以做到O(nk)O(nk)或者nknk同阶可以做到O(n2)O(n^2),然而我一直以来的写法都是这样的:
size[pt]+=size[child];size[pt]+=size[child];
for(i=min(k,size[pt]);i>=0;i)for(i=min(k,size[pt]);i>=0;i--)
   for(j=0;j<=min(i,size[child]);j++)\space\space\space for(j=0;j<=min(i,size[child]);j++)
      dp[pt][i]+=dp[pt][ij]dp[child][j];\space\space\space\space\space\space dp[pt][i]+=dp[pt][i-j]*dp[child][j];
这样的复杂度是错的……我在这题的第9个点上T了半天,后来自己造了条链把我卡了……真正的写法应该是在合并ptptchildchild两棵子树的时候进行min(k,size[pt])min(k,size[child])min(k,size[pt])*min(k,size[child])次循环,这种写法则是min(k,size[pt]+size[child])min(k,size[child)min(k,size[pt]+size[child])*min(k,size[child)次循环,在链上就被卡成O(nk2)O(nk^2)了……
话说我之前做的所有这样的题我都是这么写的,但是竟然直到今天才被卡掉……

回复

13 条回复,欢迎继续交流。

正在加载回复...