省选模拟39


A. 逃离藏宝洞

根据数据分两类来做

第一类走一步查询一下,再根据上次走的判断一下就能回到地面

第二类走 \(k\) 步再查询,这样能够判断出向上走了几步,然后还能再根据走的信息再多走一步

算一下期望就能发现正好查询一次能走两步

B. 序列划分

\(f_i\) 表示在第 \(i\) 个划分的值

转移的话枚举上一次划分的位置,然后再乘上区间 \(mex\)

用数据结构优化一下就行

我写有点麻烦了,倒着删除一个数再区间赋值能简单一些

C. 重排列

发现 \(Bob\) 不能将两个不互质的两个数交换位置

于是将不互质的两个数连边, \(Alice\) 能做的就是将边定向,表示 \(Alice\) 最后的序列中,谁在谁的前面

然后跑拓扑,将普通队列换成优先队列就能实现 \(Bob\) 的操作