blog。不會做結論題,怎麼辦???不會做結論題,怎麼辦???不會做結論題,怎麼辦???
不妨對 \(b\) 排序,將 \(a\) 對應到相應的位置。那麼題目有兩個條件:
- #1:\(\forall a_i\le b_i\)。
- #2:操作限制。
注意到 \(n-1\) 次操作就能完成對 \(a\) 排序。所以用 \(n-2\) 次操作可以將 \(a\) 變成一個 Almost Sorted 的狀態。
啟示我們對 \(a\) 排序(下文記為 \(a^\prime\))並直接進行分討。具體地:
- 若 \(\exists a^\prime_i>b_i\),由 #1,不會存在一個合法的 \(a\),NO。
- 否則,若 \(\exists a^\prime_{i+1}\le b_i\),此時有 \(a^\prime_i\le a^\prime_{i+1}\le b_i\le b_{i+1}\),交換 \(a^\prime_i,a^\prime_{i+1}\) 後仍滿足 #1 且滿足 #2,YES。
- 否則,交換任一 \(a^\prime_i,a^\prime_j\) 後序列都不滿足 #1,即合法的 \(a\) 必須有序。直接檢驗 \(a^\prime\) 是否滿足 #2 即可。
code,時間複雜度 \(O(n\log n)\)。