1. 程式人生 > >codeforces 876 D. Sorting the Coins

codeforces 876 D. Sorting the Coins

小s 表示 冒泡排序 tin 出現 排序 輸出 第一個 天才

話說這個題我讀了半天才讀懂題目啊TAT

大概是

給定一個序列,一開始全為O;
再給定一個序列P, P[i]表示第i次操作將第一個序列第P[i]位變成x
每一次操作後,從左到右掃描若幹遍序列,如果發現(i) = x && (i + 1) == O則交換,
直到沒有出現(i) = x && (i + 1) == O,輸出掃描序列的次數,然後重置序列為交換之前的狀態

實際上就是冒泡排序掃描的次數

然後發現如果不存在右邊界不能交換的情況的話,有多少個x答案都是幾

然後就並查集大力維護一下到達邊界的塊的大小size[ask(n)] 那麽 ans = i - size[ask(n)] + 1

於是就得出了n log n 的做法,據說有線性做法,不過我太弱了就只能這麽寫了

codeforces 876 D. Sorting the Coins