Solution -「NOI Simu.」记忆
长度为 的序列 初始全 , . 第 个时刻对 进行如下变换:
-
.
-
.
给出 次询问, 每次给出 , 求出 在 时刻后的值.
(嘴巴.)
一个结论: 每次被赋值的数是 的一个后缀.
另一个结论: 若 在 时刻被赋值, 则一定在 时刻被再次赋值.
由结论一, 先求出 第一次被赋值的位置. 设是 在 时刻将它赋值. 那么, 其他所有数都会在 时刻被赋值. 对于 , 设其第一次被 赋值的时刻为 , 那么其第一次被赋值的时刻 应当有 . 而因为 是已知的, 所以从 到 , 以此检查的 也是确定的. 而设 进入循环时值为 , 其被赋值需要满足 , 若一个区间存在使得 的 , 就会被其中的数赋值. 所以对下标建立线段树, 每个区间维护斜率单调栈, 即可 线段树二分求出每个数第一次被赋值的时刻.
对于询问, 我们需要求出若干完整周期的贡献和一段循环前缀的贡献. 前者比较好算. 对于后者, 二分得到被赋值至少一次的后缀 , 将询问挂在 处. 从后往前扫描 , 每次 会失去一些赋值时刻, 建立关于时间的线段树维护历史和即可. 复杂度 ( 同阶.)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2020-07-26 Solution -「洛谷 P6021」洪水