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