洛谷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 次。

相关推荐
一定要AK4 小时前
刷题时的学习笔记
c++·笔记·学习
workflower8 小时前
用硬件换时间”与“用算法降成本”之间的博弈
人工智能·算法·安全·集成测试·无人机·ai编程
小樱花的樱花8 小时前
C++ new和delete用法详解
linux·开发语言·c++
重生之我是Java开发战士10 小时前
【动态规划】简单多状态dp问题:按摩师,打家劫舍,删除并获得点数,粉刷房子,买卖股票的最佳时机
算法·动态规划·哈希算法
努力的章鱼bro10 小时前
操作系统-FileSystem
c++·操作系统·risc-v·filesystem
967710 小时前
cURL curl
c++
一匹电信狗10 小时前
【Linux我做主】进程程序替换和exec函数族
linux·运维·服务器·c++·ubuntu·小程序·开源
KAU的云实验台10 小时前
单/多UAV、静/动态路径规划,基于PlatEMO平台的带约束多目标优化 本文核心内容:
算法·matlab·无人机
Liangwei Lin10 小时前
洛谷 P1807 最长路
数据结构·算法