PKUSC 2018 真實排名

2022-05-07 19:15:07 字數 837 閱讀 6176

戳我

我們將現在所要進行的數設為\(now\)

我們分情況討論一下

他自己不翻倍

他自己翻倍

我們首先來看看\(1\)操作

如果要滿足他對排名沒有影響,那麼不能進行翻倍的數只有\([\lceil\frac\rceil,now]\)。(我考場上不知道在幹嗎,寫的是能進行翻倍的數,麻煩好多,常數也大)。我們假設這一段為\(cnt\)個,那麼這一段的答案就是:

\[c_^

\]再來看看\(2\)操作

如果我們要講\(now*2\)要使得排名不變,那麼\([now,now*2)\)則必須翻倍,將區間內的數射為res,其他的隨便選那些數都可以。答案就是

\[c_^

\]最後的答案就是

\[c_^+c_^

\]**寫的十分醜陋,畢竟是考場寫的嗎

#include#define int long long 

#define rg register

#define file(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);

const int mod=998244353;

using namespace std;

int read()

struct node a[100010];

bool cmp(const node & a , const node & b )

return ans;

}main()

for(int i=1;i<=n;i++)

cout

}

PKUSC2018 真實排名

對每個數,先分類討論,將答案分為這個數有翻倍和這個數沒翻倍。在討論前,我們規定 low x 為小於等於這個數的數的個數,當前數為 x 如果這個數沒翻倍 我們考慮哪些數翻倍不會影響這個數的排名,一種是翻倍後依然小於 x 的,一種是本來就大於等於 x 的。那麼對於第一種情況,情況數為 c low x 1...

PKUSC2018 真實排名 線段樹 組合數

pkusc2018 真實排名 對於每個數 val 分兩種情況討論 1 當 val 不翻倍時,那麼可以翻倍的是權值比 frac 小的和大於等於 val 的。2 當 val 翻倍時,顯然權值在 val,val 2 1 的都要翻倍,剩下可以翻倍的是權值比 val 小的和大於等於 2 val 的。用權值線段...

P5368 PKUSC2018 真實排名

problem link 對於每個 a i 我們可以考慮這 k 個選手中要不要有 a i 如果沒有的話,那我們就看看有哪些 a j 在翻倍後不會影響到 a i 的排名 顯然 2 a j或者 a i le a j 的這些 a j 都滿足要求,我們記它們的個數為 cnt 1 那麼如果這 k 個中有 a ...