CF575B Bribes
CF575B Bribes
Solution
对 “有效边” 统计被反向经过的数量然后等比数列求和。
考虑一条路径
自叶向根: 不在 子树内, 在 子树内。 自根向叶: 在 子树内, 不在 子树内。
判断在不在子树内可以用 dfs
序。
对每一条 “有效边”,都需要求出给定序列中满足条件的
考虑枚举 “有效边”,此时子树区间固定。
考虑将给定序列分成若干有向线段(线段端点位置是 dfs
序)。
具体地:若
把正序线段称作一类线段,逆序线段称作二类线段,分别计算。
分类讨论哪些线段会对当前询问产生贡献:
- 自叶向根:询问区间为
子树对应的区间,- 对于一类线段:左端点在区间左侧,右端点在区间内。
- 对于二类线段:左端点在区间内,右端点在区间右侧。
- 自根向叶:询问区间为
子树对应的区间,- 对于一类线段:左端点在区间内,右端点在区间右侧。
- 对于二类线段:左端点在区间左侧,右端点在区间内。
需要预处理:
- 以点
为左端点向右延伸的线段数量 - 以点
为右端点向左延伸的线段数量 - 对上面两个量求前缀和数组
左端点在区间左侧,右端点在区间内的线段数量可以转为
瓶颈在求
本文作者:Schucking-Sattin
本文链接:https://www.cnblogs.com/Schucking-Sattin/p/17153262.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步