洛谷P15652 [省选联考 2026] 排列游戏 / perm题解

非常巧妙的题目,知道方法代码就很好写了。

考虑 000 在第一位的特殊情况,这时我们询问前缀 mex,记为 sss 数组,如果 si≠si+1s_i≠s_{i+1}si=si+1,那么 ai+1=sia_{i+1}=s_iai+1=si。对于剩下的数字,我们只需要随便填,只要满足 sss 数组即可。

为什么呢?因为如果一个数 xxx 填入后前缀 mex 没有发生变化,那么一定有比 xxx 小的数没有填入。也就是说,xxx 的前后都有比 xxx 小的数(前面至少有 000),我们把这两个数分别记为 lll,rrr。那么,如果一个区间的 mex 小于 xxx,这个区间就和 xxx 没有关系。如果一个区间的 mex 要大于 xxx,这个区间就一定要跨越 lll,rrr。这时我们发现,xxx 只要在 lll,rrr 之间就行,随便找个地方放。

至于 000 不在第一位的情况,分别跨越 000 做前缀与后缀 mex 即可。注意询问 0,n−10,n-10,n−1 时直接用 nnn 即可,不用调用函数。

正好询问 nnn 次。

相关推荐
lvwangshu1 小时前
exBSGS 算法
数学·算法
不会就选b1 小时前
算法日常・每日刷题--<贪心+大根堆>2
数据结构·算法
码艺-Alimjan1 小时前
维吾尔语数字转文本
java·javascript·python·算法·go
AI服务老曹1 小时前
算法任务配置完整流程:明厨亮灶项目从0到1怎么做 | AI视频分析算法实践
人工智能·算法·音视频
hahaha60161 小时前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#
hans汉斯1 小时前
【计算机科学与应用】基于联合熵驱动改进麻雀搜索优化VMD的DAS信号去噪方法
深度学习·算法·yolo·软件工程·汉斯出版社
词却1 小时前
机器学习入门:手写数字识别与算法对比
人工智能·算法·机器学习
水饺编程1 小时前
第5章,[Win32 章节] :圆角矩形教学插图绘制程序
c语言·c++·windows·visual studio
张欣-男2 小时前
3分钟理解线性代数
线性代数·算法
Existence_Time2 小时前
CSP 考前复习
c++