APIO 2024 试机赛 T1 题解
反正是试机赛,早点发出来也不要紧,所以就先发出来了。
容易观察到,我们每步总是向右走到可达的最远点。
然而,由于可能单步最优的解在区间外,因此不能直接倍增。
观察到区间最值一定要被选,因此考虑由其分段,变为两个存在一个端点处为最值的子问题。
容易发现这样从最大值开始,下一步必定跳到最小值,再往后必定跳到最大值……以此类推。
考虑如果离线,我们可以对区间的右端点推进扫描线,并维护出当前后缀最大值和最小值位置的单调栈。
这样,我们如果可以快速维护出这些后缀最值之间的树状关系,从而计算出当前节点的深度,即可得到答案。
假设计算时用到的是最大值,则我们只用知道最大值栈到根节点的距离。
考虑最大值栈上相邻两个点。
如果其之间存在数值在前缀最小值上,则答案相差 :需要先转去最小值,再转回最大值;如没有,且两者均在栈顶下面,那么其必定转到同一个最小值上,故答案相同。
可以发现,由于单次操作只会对相邻位置的差值造成贡献,可以用线段树维护。
使用主席树即可在线。
总复杂度 。
本文来自博客园,作者:myee,转载请注明原文链接:https://www.cnblogs.com/myee/p/18197097/APIO2024-pre-T1-sol
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫