AT_nikkei2019_2_qual_c 題解

liangbowen發表於2024-10-18

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)\)