P10430 [JOISC 2024 Day1] 鱼 3

P10430 [JOISC 2024 Day1] 鱼 3

My Blogs

P10430 [JOISC 2024 Day1] 鱼 3

首先操作可以看成是单点减 k 和后缀减 1,问区间能不能全部减到 0,并最小化单点操作次数。

假设先进行所有的单点修改,则一定是把一个区间改成单增的。

考虑扫描线,从左向右依次新加入数,并且在这个过程中要保持当前的序列单增。可以用一个单调栈来维护连续段。

这里的连续段指的是相邻两个数的差小于 k 的极大连续段,如果当前栈顶连续段的右端点大于新加入的数 x,就需要对整个连续段的数进行一次操作,直到满足右端点小于等于当前的 x

栈顶不断减 k 的过程中,可能会和它下面的一个连续段合并。这样复杂度是均摊 O(n) 的。假设这次对某个连续段进行了 k 次操作,可以看成是一次序列上的区间加 k,查询就是查询区间和,用树状数组或者线段树实现,复杂度是 O(nlogn)。代码找不到了 QwQ。

posted @   WrongAnswer_90  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

This blog has running: 562 days 16 hours 12 minutes 33 seconds

点击右上角即可分享
微信分享提示