【題解】CF1336D Yui and Mahjong Set
阿新 • • 發佈:2022-02-06
給一個稍微複雜點的做法()。
考慮用 $\mathbf{triplet}$ 為輔確定單個元素,$\mathbf{straight}$ 為主求解。首先將問題以 $n$ 的奇偶性分成兩種情況,然後可以注意到兩個點:
- 問某個 $a_i$ 第兩次後一定能確定它的值。
- 當知道某個 $a_i$ 是否為 $0$ 時,只需要問一次就可以知道它的值。
那麼首先考慮 $n$ 是奇數的情
給一個稍微複雜點的做法()。
考慮用 \(\mathbf{triplet}\) 為輔確定單個元素,\(\mathbf{straight}\) 為主求解。首先將問題以 \(n\) 的奇偶性分成兩種情況,然後可以注意到兩個點:
- 問某個 \(a_i\) 第兩次後一定能確定它的值。
- 當知道某個 \(a_i\) 是否為 \(0\) 時,只需要問一次就可以知道它的值。
那麼首先考慮 \(n\) 是奇數的情況:
- 首先問所有偶數,保證此時所有偶數上的值大於 \(0\) 。注意問 \(a_2\) 的時候需要保證 \(a_4\) 大於 \(0\),問 \(a_{n-1}\) 的時候需要保證 \(a_{n-3}\)
- 此時借用 \(a_2\) 的結果判斷 \(a_3\) 是否夠等於 \(0\),用 \(a_{n-1}\) 的結果判斷 \(a_{n-2}\) 是否等於 \(0\),然後花兩次詢問確定 \(a_3,a_{n-2}\) 。
- 接著將除去 \(a_{n-1}\) 之外的所有偶數都問一遍確定值,然後用 \(a_4,\cdots a_{n-5}\) 的結果求得 \(a_{5}\cdots a_{n-4}\),再用 \(a_{n-3}\) 的結果求出 \(a_{n-1}\) 。
- 最後用原來 \(a_{3},a_{n-2}\) 的結果求出 \(a_{1},a_{n}\),總共恰好花費 \(n\)
然後考慮 \(n\) 是偶數的情況:
- 首先詢問所有的偶數,注意仍然要最後問 \(a_2,a_n\) 。
- 再問一次 \(a_{n-2}\),得到 \(a_{n-2}\) 的值,然後通過 \(a_{n}\) 的結果求得 \(a_{n-1}\) 的值。(如果 \(a_{n-1}=0\) 就很難繼續做,處理方式是再問一次 \(a_{n}\) 然後同時去掉後兩項,注意不要刪到只剩下兩個,然後特殊處理 \(n=4\) 的情況)。
- 問出 \(a_3\),然後再問一遍所有除 \(a_{n},a_{n-2}\) 以外的所有偶數,求出之間的所有奇數。
- 最後求出 \(a_{1}\)