CF div2 1000(DE)
D
三分 & 反悔贪心
计算最大匹配数很简单,难点在于计算每种匹配数情况贡献的最大值。
贪心地想也能发现,对于每个集合,若固定选择线段的个数
这个可以用前缀和预处理出来,以做到对于某个给定匹配数,能够
对于某个匹配数
观察上面的前缀和,可以发现,前缀和维护的序列一定是单调递减的。这样就发现了可优化的关键点——设在
本题还有反悔贪心解法:若两个集合中都可以挑选线段(
E
组合计数
需要将式子拆开,即计算:
考虑将上面的三项拆开来计算:
- 对于
这一项:钦定 较小,对于 ,计算符合要求的 的数量。则 需要满足: 且 不在 的子树内。可以按深度预处理结点数量的后缀和 ,则数量为: ,贡献为:
- 对于
这一项:计算每个点 作为 时的 数量即可。显然为:
最后还需要除以2,因为
- 对于
,直接计算 的数量即可:
分别计算以上三项并求和,即为答案。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战