QOJ #8670. 独立
首先把树上最大独立集的 dp 抽象一下,可以得到如下做法:对于每个点求出 ,则所有 之和就是最大独立集。
则我们设 表示第 个点的 时的方案数,直接朴素的 dp 时 的。
一个猜想是 可以用很简单的形式表示出来。实际上, 是一个次数不超过 的多项式在 处的点值。
先考虑怎么把子树的 乘起来,比如现在需要合并两个大小分别为 和 的子树,则合并后可以用一个 大小为 的多项式刻画。因此我们将两棵子树都插值到 ,然后将这两部分进行一个卷积就行了。
然后现在我们有了这个多项式的点值,需要取反以及前缀和,这同样需要插出 个点值,对于连续点值的插值,可以用 NTT 做到 ,因此总复杂度 。
最后一个问题就是对于 的位置是对的,但是更大的是不对的。对于这样的情况,因为更大的会和 取 ,所以只需要用总和减去所有最终卷积出来 的位置的值之和,然后增加到 即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2021-09-10 luogu P5939 [POI1998]折线