CF1824B

一种不同于官方题解的 O(n) 做法

考虑一个点在什么情况下能作为答案。

发现应当满足这个点为根时,他的每个儿子的字数内点数均不超过 k2

k 为奇数,那么这样的点唯一;否则这样的点将形成一条链(实际上不需要用到这一性质)。

设这个点若干子树大小分别为 x1,,xm,我们发现,如果某个子树内的点数超过了 k2,那么这样的子树至多只有一个。下文记 k=2w,则 w=k2

考虑容斥,钦定某个 xi 中放了超过 w 个,方案数为

j=w+1k(xij)(nxikj)

类似于LNOI2022 盒,考虑其组合意义,将其看作:在一行排列的 n 个盒子中放下 k 个球,要求第 w+1 个球放在第 x 个盒子之前的方案数。枚举第 w+1 个球的位置,有

j=w+1k(xij)(nxikj)=i=1xi(i1w)(nikw1)

这样我们就可以线性地每个 xi=1n 预处理出这个值了。设其为 f(xi),则该点的答案就是 (nk)f(xi)。总的时间复杂度为 O(n)

https://codeforces.com/contest/1824/submission/205182489

posted @   云浅知处  阅读(327)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示