Solution Set -「LOCAL」冲刺省选 Round XXII
欸欸欸?以前的 round 编号是不是都多写了一个 X 啊,怎么没人告诉我 qwq。
排队
给定 ,求前缀为 的所有 阶排列 中,满足 的数量。答案模 。
。
起码,在开始找规律之前,得动脑子思考一下吧。😅
显然 ,考虑后面这个式子的具象意义比较方便: 放在 ,后面的逆序对数至少是 。我们的目标即是同时让每个下界都被取到,才能获得正确的逆序对数。
升序考虑值,把值插入到排列的对应位置,可以简单发现:
- 下界都取到,前缀 单增;
- 没有其他逆序对,除前缀 序列后,排列单增。
所以,前缀 序列(位置和值)确定后,排列确定。直接观察前缀 ,是一段阶梯状的函数,类 Catalan 算一算方案数就行。复杂度 。
论文查重
给定字符串集合 ,序列 以及字符串 ,求 与 的 LCS。
,。
LCS 的长度不超过 ,这个范围显然小于 ,所以应该把它记到状态里。令 表示 在 中取到 长的 LCS 时,至少需要用到 的第 个字符。对每个 预处理一个序列自动机就能转移了。如果当前 转移不了就在 上二分下一个有这一字符的串。复杂度 ,实现得好 应该可以丢掉。
烽火戏诸侯
给定 ,每次选一对 ,令 ,。求最多能操作多少次。
。
结论:保持 有序,若能操作某个 ,操作它;否则若能操作某个 ,操作它。欸不是,我代码删个判句就对了,你起码告诉我为什么呀。
证明留作悬念,我们看看怎么维护。尝试增量法:先通过操作使 变成值连续段,加入 时,形如下图:

现加入 点,操作 ,为了保持值连续,连锁操作 ,最后 下降 单位的效果是 (升序段末尾)上升 单位,贡献是升序段的长度,并且合并了两个升序段( 本来自己是独立的升序段)。所以,这里直接用栈维护升序段起点,BIT 维护序列,均摊只有 次点-升序段的整体修改。当 高度不够时,计算得到能够抬升的升序段前缀,修改一下,增加一个升序段,不影响复杂度。
维护出值连续段后,丢在桶里模拟一下两边往中间操作的过程即可。复杂度 ,其实我觉得实现得好 还是能丢掉。(
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现