Codeforces Round #720 (Div. 2) C. Nastia and a Hidden Permutation 交互
傳送門
文章目錄
- 題意:
- 思路:
題意:
給你一個序列ppp長度nnn,每次可以執行兩個種詢問:
t=1max(min(x,pi),min(x+1,pj))t=1\ \ max(min(x,p_i),min(x+1,p_j))t=1??max(min(x,pi?),min(x+1,pj?))
t=2min(max(x,pi),max(x+1,pj))t=2\ \ min(max(x,p_i),max(x+1,p_j))t=2??min(max(x,pi?),max(x+1,pj?))
詢問操作不能超過?3?n2?+30\left \lfloor \frac{3*n}{2} \right \rfloor+30?23?n??+30次。
n<=1e4n<=1e4n<=1e4
思路:
交互題看到操作不能超過?3?n2?+30\left \lfloor \frac{3*n}{2} \right \rfloor+30?23?n??+30的時候容易想到通過?n2?\left \lfloor \frac{n}{2} \right \rfloor?2n??次操作詢問出某個值,讓后再通過n?1n-1n?1次操作詢問出所有值,下面考慮如何詢問某個值。
其實1,21,21,2操作是差不多的,我們這里利用第一個操作詢問出來nnn的位置。從111開始,讓x=n?1x=n-1x=n?1,每次詢問相鄰兩項,如果返回值為nnn的話,說明i+1i+1i+1的位置是nnn,如果是n?1n-1n?1的話,將i,i+1i,i+1i,i+1的位置調換一下再詢問一次看是否為nnn。當nnn為奇數的時候,如果最后都沒找到nnn的位置,那么說明nnn的位置在最后一位。
現在知道nnn的位置為pospospos,我們可以通過第二個操作詢問出來所有值,我們讓pj=pos,x=1p_j=pos,x=1pj?=pos,x=1,讓后讓pip_ipi?為當前詢問的位置,返回值即為當前位置的值。
這樣問題就完美解決啦,總詢問次數不會超過?n2?+n+1\left \lfloor \frac{n}{2} \right \rfloor+n+1?2n??+n+1
總結
以上是生活随笔為你收集整理的Codeforces Round #720 (Div. 2) C. Nastia and a Hidden Permutation 交互的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吉尔吉斯坦面积有多大 吉尔吉斯斯坦的国土
- 下一篇: 微软公2016年1月补丁汇总 包括Win