P5648 Mivik的神力 (卡常倍增,树状结构维护)
upd 2024.11.13
卡常倍增 或 树状结构维护
统计类问题,一般思路是找到数据结构维护关键信息。
这题拆不了式子,但是如果可以注意到前缀最大值的单调性,这时候就有非常多的数据结构可以维护了。
单调性怎么用?
贡献是一段段区间的形式,暴力的倍增是首想。
如果将每个位置与比它大的第一个位置相连,是树形结构。这时候询问区间会变为询问树上链和,也可以做。
想了好久也没思路。
首先很容易发现维护静态区间 max 是很容易的(st表),但是仍然不能快速维护前缀max和。
考虑前缀max 的性质。首先前缀max 的值是单调递增的,对于前缀max 序列,可以将其分成若干个内部相等的段。也就是对于每个数
如果考虑优美一点的暴力,我们可以按每一段处理(每一段权值固定),最优复杂度当然是只有一段区间是,复杂度为
瓶颈在于每一次我们都要跳到下一个新的段,段数太多,不能一个一个跳。那我们的思路就有了——倍增。
我们考虑
第二个式子成立的原因是,从
统计答案时从大到小枚举
考虑更优的做法,我们发现对于每个
转化完后,维护每个节点到根节点的前缀和
复杂度为
总结就是优化跳跃的题目经常会和倍增相关,如果跳跃路径固定,路径会构成树状结构,达到转化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具