Solution -「NOI Simu.」记忆
\(\mathscr{Description}\)
长度为 \(n\) 的序列 \(A\) 初始全 \(0\), \(C=0\). 第 \(i\ge0\) 个时刻对 \(A\) 进行如下变换:
\(\forall i\in[1,n],~a_i\gets a_i+i\).
\(\forall i\in[1,n]\land a_i>h_{i\bmod m},~a_i\gets h_{i\bmod m},C\gets C+1\).
给出 \(q\) 次询问, 每次给出 \(k\), 求出 \(C\) 在 \(k\) 时刻后的值.
\(\mathscr{Solution}\)
(嘴巴.)
一个结论: 每次被赋值的数是 \(A\) 的一个后缀.
另一个结论: 若 \(a_i\) 在 \(t\) 时刻被赋值, 则一定在 \(t+m\) 时刻被再次赋值.
由结论一, 先求出 \(a_1\) 第一次被赋值的位置. 设是 \(h_k\) 在 \(t\) 时刻将它赋值. 那么, 其他所有数都会在 \(t\) 时刻被赋值. 对于 \(a_i\), 设其第一次被 \(h_k\) 赋值的时刻为 \(t'\), 那么其第一次被赋值的时刻 \(t''\) 应当有 \(t''\in[t'-m,t]\). 而因为 \(h_k\) 是已知的, 所以从 \(t'-m\) 到 \(t\), 以此检查的 \(h\) 也是确定的. 而设 \(a_i\) 进入循环时值为 \(b\), 其被赋值需要满足 \(h_x<kx+b\), 若一个区间存在使得 \(h_x-kx-b<0\) 的 \(x\), \(a_i\) 就会被其中的数赋值. 所以对下标建立线段树, 每个区间维护斜率单调栈, 即可 \(\mathcal O(n\log n)\) 线段树二分求出每个数第一次被赋值的时刻.
对于询问, 我们需要求出若干完整周期的贡献和一段循环前缀的贡献. 前者比较好算. 对于后者, 二分得到被赋值至少一次的后缀 \([p,n]\), 将询问挂在 \(p\) 处. 从后往前扫描 \(a\), 每次 \(a\) 会失去一些赋值时刻, 建立关于时间的线段树维护历史和即可. 复杂度 \(\mathcal O(n\log n)\) (\(n,q\) 同阶.)
Solution -「NOI Simu.」记忆的更多相关文章
- Solution -「NOI 2016」「洛谷 P1587」循环之美
\(\mathcal{Description}\) Link. 给定 \(n,m,k\),求 \(x\in [1,n]\cap\mathbb N,y\in [1,m]\cap \mathbb ...
- Solution -「NOI 2021」「洛谷 P7740」机器人游戏
\(\mathcal{Description}\) Link. 自己去读题面叭~ \(\mathcal{Solution}\) 首先,参悟[样例解释 #2].一种暴力的思路即为钦定集合 \ ...
- Solution -「NOI 2020」「洛谷 P6776」超现实树
\(\mathcal{Description}\) Link. 对于非空二叉树 \(T\),定义 \(\operatorname{grow}(T)\) 为所有能通过若干次"替换 \( ...
- Solution -「NOI 2012」「洛谷 P2050」美食节
\(\mathcal{Description}\) Link. 美食节提供 \(n\) 种菜品,第 \(i\) 种的需求量是 \(p_i\),菜品由 \(m\) 个厨师负责制作,第 \(j\) ...
- Solution -「NOI 2008」「洛谷 P3980」志愿者招募
\(\mathcal{Description}\) Link. 一项持续 \(n\) 天的任务,第 \(i\) 天需要至少 \(a_i\) 人工作.还有 \(m\) 种雇佣方式,第 \(i\) ...
- Solution -「NOI 2018」「洛谷 P4768」归程
\(\mathcal{Description}\) Link. 给定一个 \(n\) 个点 \(m\) 条边的无向连通图,边形如 \((u,v,l,a)\).每次询问给出 \(u,p\),回答 ...
- Solution -「ARC 104E」Random LIS
\(\mathcal{Description}\) Link. 给定整数序列 \(\{a_n\}\),对于整数序列 \(\{b_n\}\),\(b_i\) 在 \([1,a_i]\) 中等概率 ...
- Solution -「NOI 模拟赛」彩色挂饰
\(\mathcal{Description}\) 给定一个含 \(n\) 个点 \(m\) 条边的简单无向图,设图中最大点双的大小为 \(s\),则保证 \(s\le6\).你将要用 \(k\) ...
- Solution -「NOI 模拟赛」出题人
\(\mathcal{Description}\) 给定 \(\{a_n\}\),求一个 \(\{b_{n-1}\}\),使得 \(\forall x\in\{a_n\},\exists i,j\ ...
- Solution -「NOI.AC 省选膜你赛」array
题目 题意简述 维护一个长度为 \(n\) 的序列 \(\{a_n\}\),并给出 \(q\) 个操作: 将下标为 \(x\) 的数修改为 \(y\). 给定 \(l,r,k\),求最大的 \(m ...
随机推荐
- Protues中51单片机按键无法复位(已解决)
前言 昨晚用 Protues 搭建了 51 的最小系统电路,在实物中好用的复位电路,到仿真里不能正常复位了. 51 单片机是高电平复位,所以在运行时 RST 引脚应该是低电平,但在仿真中 RST 引脚 ...
- 『玩转Streamlit』--页面布局
一个优秀的数据应用不仅仅是功能的强大,更在于其用户体验的打造. 而良好的页面布局,作为用户体验的重要组成部分,不仅能够提升信息的可读性,还能引导用户高效地完成操作. 反之,混乱的布局会让人感到困惑和挫 ...
- 封装socket 到vue2.x 使用
vue2.x 使用 socket 数据交互 简单封装 socket //生成唯一标识符 function getUuid { let s = []; let hexDigits = "012 ...
- 题解:CF1537E2 Erase and Extend (Hard Version)
CF1537E2 Erase and Extend 题解 分析 通过观察题目,可以证明结果一定是由多次前缀复制得来的. 题目要求你进行删和复制的操作,与其交替着操作,不如直接先删到最优的前缀再进行复制 ...
- CF2027D The Endspeaker (Hard Version) 题解
题面 给你一个长度为 \(n\) 的数组 \(a\) 和一个长度为 \(m\) 的数组 \(b\) (所有 \(1 \le i < m\) 满足 \(b_i > b_{i+1}\) ).最 ...
- 基于Ubuntu搭建Pwn调试环境
Pwn环境配置 本文演示使用干净的Vmware下安装的的 Ubuntu 18.04 LTS镜像 配置以下Pwn环境: OS(系统)配置 VMware Tools net-tools open-vm-t ...
- Linux中vim快捷键+vim报错解决
vim快捷键+vim报错解决 vim 快捷键 编辑器 yum -y install vim 快捷键: 视图模式: 0 Home ^ 快速移动光标到行首 $ End 快速移动光标到行尾 u 撤销 ...
- Windows系统下PhpStorm+Xdebug安装与调试
环境说明: 系统:Windows10 PhpStorm:2019.3.2 PHP版本:7.3.21 Xdebug版本 :2.7.2 一.Xdebug介绍 官网地址:https://xdebug.org ...
- 使用Acme.sh免费签发SSL证书
github:https://github.com/acmesh-official/acme.sh 概述一个纯粹用Shell(Unix shell)语言编写的ACME协议客户端.完整的ACME协议实施 ...
- PHP编译安装之常见问题
正式服的PHP环境,一般都会进行编译安装,汇总一下经常遇到的一些问题 1.Call to undefined function crmeb\utils\imagecreate 解决:需要安装gd库 1 ...