【题解】P8969 Dream with Dynamic | 线段树 思维
看到这个题的题解都很简略,所以我写详细点。
首先这个 函数的势能性质是不好分析的,因为 时 不一定大于 , 所以只能考虑 的值域为 的性质,
线段树维护,将操作分为若干线段,接下来如果某个段在某个时刻被求过一次 ,后面无论再怎么整段地加,它的值都可以表示成 的形式,所以我们考虑在线段树上维护标记:
,其中 是一个 值域和定义域均为 的函数,这样做的原因如下:
我们把操作序列形象地描述出来,加法是 ,区间做 是 ,那么操作序列例如
我们把加法合并成一次再按照 分段:
就变成了若干次 的复合,这就是一个值域 的函数,从第二次开始定义域也变成了 ,于是我们直接维护第一步函数的样子,暴力维护第二步开始以及后面函数的复合,单独计算最后的加法就可以做到了。
纯加法需要单独记录,它的值域不同。复合时也需要特判。
时间复杂度 ,可以跑进 4s,做一些卡常性质的处理(如对于区间长度小于 的区间,再次下传标记是不优秀的,不如暴力)即可跑进 2s,目前最优解第二。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17096170.html,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-02-06 atcoder近期比赛记录