CF2113D Cheater
这个题比较好。
我们思考一共只打 \(n\) 把的性质。假设答案为 \(ans\),那么就证明玩家恰赢了 \(ans\) 把,跪了 \(n - ans\) 把。
由于特殊的机制,如果赢了 \(ans\) 把,那就证明在 \(1 \sim ans\) 之间没有出现一直卡壳的情况,此时由于跪了 \(n - ans\) 把,所以庄家的前 \(n - ans + 1\) 把都得要赢一次(其实这个无所谓,要 $ + 1$ 是为了确保最后一个数不卡壳)。
抽象来说,就是 \(1 \sim ans\) 之间每个数都至少在 \(1 \sim n - ans + 1\) 战胜一次,也就是其最小值要大于庄家的最小值。
由于交换一次,显然会选择最大的交换,于是维护一下前缀最小/次小,和后缀最大,线性就做完了。

浙公网安备 33010602011771号