PKUSC2018 真實排名 線段樹 組合數

2022-05-08 03:06:14 字數 1192 閱讀 9145

[pkusc2018]真實排名

對於每個數$val$分兩種情況討論:

1、當$val$不翻倍時,那麼可以翻倍的是權值比$\frac$小的和大於等於$val$的。

2、當$val$翻倍時,顯然權值在$[val,val*2-1]$的都要翻倍,剩下可以翻倍的是權值比$val$小的和大於等於$2*val$的。

用權值線段樹維護權值,剩下的就是一步組合數。注意對$val=0$的特判。

#include#include#include#include#include#include#include#include#include#include#include#define ll long long

using namespace std;

const int mod=998244353;

const int inf=1000000000;

int fac[100010];

int inv[100010];

int sum[10000000];

int ls[10000000];

int rs[10000000];

int cnt;

int n,k;

int a[100010];

int root;

void change(int &rt,int l,int r,int k)

sum[rt]++;

if(l==r)

int mid=(l+r)>>1;

if(k<=mid)

else

}int query(int rt,int l,int r,int l,int r)

if(l<=l&&r<=r)

int mid=(l+r)>>1;

int res=0;

if(l<=mid)

if(r>mid)

return res;

}int c(int n,int m)

return 1ll*fac[n]*inv[m]%mod*inv[n-m]%mod;

}int solve(int val)

else

return ans;

}int main()

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

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

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

}

PKUSC 2018 真實排名

戳我 我們將現在所要進行的數設為 now 我們分情況討論一下 他自己不翻倍 他自己翻倍 我們首先來看看 1 操作 如果要滿足他對排名沒有影響,那麼不能進行翻倍的數只有 lceil frac rceil,now 我考場上不知道在幹嗎,寫的是能進行翻倍的數,麻煩好多,常數也大 我們假設這一段為 cnt ...

PKUSC2018 真實排名

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

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 ...