洛谷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−1][0,n-1][0,n−1] 时直接用 nnn 即可,不用调用函数。

正好询问 nnn 次。

相关推荐
项目申报小狂人1 小时前
基于迁移学习与丢弃法的神经网络算法在无人机失移动目标搜索中的应用,含代码
神经网络·算法·迁移学习
仰泳的熊猫1 小时前
题目1834:蓝桥杯2016年第七届真题-路径之谜
数据结构·c++·算法·蓝桥杯·深度优先·图论
Darkwanderor2 小时前
数据结构——单调栈和单调队列
数据结构·c++·单调栈·单调队列
机器学习之心2 小时前
198种组合算法+优化SVR支持向量机回归+SHAP分析+新数据预测!机器学习可解释分析,强烈安利,粉丝必备!
算法·shap分析·新数据预测·优化svr支持向量机回归
宵时待雨2 小时前
C++笔记归纳8:stack & queue
开发语言·数据结构·c++·笔记·算法
爱吃生蚝的于勒2 小时前
【Linux】网络基础(一)
linux·运维·服务器·网络·后端·算法·架构
24白菜头2 小时前
第十六届蓝桥杯C&C++大学B组
数据结构·c++·笔记·算法·职场和发展·蓝桥杯
小年糕是糕手2 小时前
【35天从0开始备战蓝桥杯 -- Day2】
开发语言·jvm·数据库·c++·程序人生·考研·蓝桥杯
小年糕是糕手2 小时前
【35天从0开始备战蓝桥杯 -- Day1】
jvm·数据结构·c++·程序人生·算法·职场和发展·蓝桥杯