第二十二次

A nm K,没 AK

A

每条边的贡献为其任意一个端点的点权,考虑钦定选择点权较小的一个,

将每条边定向,点权大的点连向点权小的点,按拓扑排序删点即可构造出这样的方案。

B

(=1,)=1

考虑在当前和为 s 的串 a 后接上 i 串,若 a 的任意前缀和 0,则 i 串中前缀和与前缀最小和均为 s 的位置可以形成 RBS 前缀,

预处理 sS 表示 S 中的串的和,预处理 pi 表示 i 串的前缀最小和,

预处理 oi,j 表示 i 串中前缀和与前缀最小和均为 j 的位置个数,

fS,0/1 表示填了 S 中的串,填出的串任意前缀和是 / 否 0(是否还能往后接串),

考虑往后填 i 串,则有转移:

{fS{i},1max{fS{i},1,fS,1+oi,sS}sS+pi0fS{i},0max{fS{i},0,fS,1+oi,sS}sS+pi<0

D

pi 表示 i 到最近叶子的距离,可以换根 DP 求出。

考虑算点 u 的答案,若 pid(u,i),则可以用一个农民封锁以 u 为根 i 子树内所有叶子,

注意到以 u 为根时 pid(u,i)i 形成若干子树,所以只需封锁这些子树的根,u 的答案即为子树个数。

考虑给每个点赋一个权,使得任意子树点权和 =1

此时 pid(u,i)i 的点权和即为其形成的所有子树的点权和,

而每个子树点权和 =1,所以其形成的所有子树的点权和即为其形成的子树个数。

gi 表示 i 的度数,注意到对于任意真子树 UiUgi=2|U|1,则 iU(2gi)=1,给 i 点赋权 2gi 即可。

问题变为对每个 u 求出 pid(u,i)i 的点权和,点分治即可。

posted @   Jijidawang  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示