P5386 [Cnoi2019] 数字游戏
给出长度为
的排列 , 次询问有多少对 满足 且 。
。
。
下文中默认
考虑对
由于给出的是一个排列,
考虑线段树,一个节点维护一下几个信息:
-
:代表这个节点对应的区间长度。 -
:代表这个节点对应的区间中,以左端点开始的最长连续 段长度。 -
:代表这个节点对应的区间中,以右端点结束的最长连续 段长度。 -
:代表这个节点对应的区间的答案。
合并两个节点
容易支持单点修改。这样做时间复杂度为
原因是修改数量为
记:
-
为第 块的左右端点。 -
为 位置所在块。 -
为第 块的信息。 -
的意义如下:若 是这个块中一个极长 连续段的端点,则 的值为它所在极长 连续段的另一个端点;否则 。
考虑
处理好修改后
至于
但是发现
查询可以考虑从左往右遍历每个查询区间中的块(包括散块),散块暴力计算信息,整块就用维护好的
处理询问时,对于左右端点在莫队中分出的块相同时,对于
剩下的询问离线跑回滚莫队。每次做一段左端点在莫队中分出的块相同的询问。假设这一块的右端点为
做完一段左端点所在块相同的询问后,暴力清空分块。由于只会有
修改的和查询的总复杂度都是
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话