把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

QOJ #8670. 独立

题面传送门

首先把树上最大独立集的 dp 抽象一下,可以得到如下做法:对于每个点求出 bi=max(0,aijsonibj),则所有 b 之和就是最大独立集。

则我们设 dpi,j 表示第 i 个点的 bi=j 时的方案数,直接朴素的 dp 时 O(nm2) 的。

一个猜想是 dpi 可以用很简单的形式表示出来。实际上,dpi,j(0<jm) 是一个次数不超过 sizi 的多项式在 j 处的点值。

先考虑怎么把子树的 dpi 乘起来,比如现在需要合并两个大小分别为 sizisizj 的子树,则合并后可以用一个 大小为 sizi+sizj 的多项式刻画。因此我们将两棵子树都插值到 sizi+sizj,然后将这两部分进行一个卷积就行了。

然后现在我们有了这个多项式的点值,需要取反以及前缀和,这同样需要插出 sizi 个点值,对于连续点值的插值,可以用 NTT 做到 O(nlogn),因此总复杂度 O(n2logn)

最后一个问题就是对于 jm 的位置是对的,但是更大的是不对的。对于这样的情况,因为更大的会和 0max,所以只需要用总和减去所有最终卷积出来 m 的位置的值之和,然后增加到 0 即可。

submission

posted @   275307894a  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2021-09-10 luogu P5939 [POI1998]折线
浏览器标题切换
浏览器标题切换end
点击右上角即可分享
微信分享提示