BZOJ5368 Pkusc2018 真實排名

2021-08-27 04:06:44 字數 1832 閱讀 4429

time limit: 10 sec  memory limit: 256 mb

submit: 163  solved: 83

小c是某知名比賽的組織者,該比賽一共有n名選手參加,每個選手的成績是乙個非負整數,定義乙個選手的排名是

:成績不小於他的選手的數量(包括他自己)。例如如果333位選手的成績分別是[1,2,2],那麼他們的排名分別是

[3,2,2]。擁有上帝視角的你知道所有選手的實力,所以在考試前就精準地估計了每個人的成績,設你估計的第iii

個選手的成績為ai,且由於你是上帝視角,所以如果不發生任何意外的話,你估計的成績就是選手的最終成績。但

是在比賽當天發生了不可抗的事故(例如遭受到了外星人的攻擊),導致有一些選手的成績變成了最終成績的兩倍

,即便是有上帝視角的你也不知道具體是哪些選手的成績翻倍了,唯一知道的資訊是這樣的選手恰好有k個。現在

你需要計算,經過了不可抗事故後,對於第i位選手,有多少種情況滿足他的排名沒有改變。由於答案可能過大,

所以你只需要輸出答案對998244353取模的值即可。

第一行兩個正整數n,k

第二行n個非負整數a1..an

1≤k輸出n行,第i行乙個非負整數ansi,表示經過不可抗事故後,第i位選手的排名沒有發生改變的情況數。

3 21 2 331

2樣例解釋

一共有3種情況:(1,2)翻倍,(1,3)翻倍,(2,3)翻倍。

對於第乙個選手來說,他的成績就算翻倍,其他人都不低於他,所以任意情況下他的排名都不會改變。

對於第二個選手來說,如果是(1,2)翻倍,成績變成(2,4,3),他的排名變成了第一;

如果是(1,3)翻倍,則成績變成(2,2,6),他的排名變成了第三;如果是(2,3)翻倍,則成績變成(1,4,6),他的排名還是第二。

所以只有一種情況。

對於第三個選手來說,如果是(1,2)翻倍,他的排名會變成第二,其他情況下都還是第一。

解析:求出每個人的排名rank然後分這個人是否乘2進行討論,設這個人的分數為w。

每次求出 原來小於w,乘2後也小於w的個數sum1.原來大於等於w,乘2後也大於等於w的個數sum2,其他的人數sum3。設第三種人選了q個人。如果有p3+q=rank-1。那麼答案為c(p2)(q)*c(p1+p3)(k-q2)或c(p2)(q)*c(p1+p3)(k-q-1)。

注意當a[i]=0時直接令答案為c(n)(k)即可,省的在求p3的時候特判。細節見**。

**(不太優秀qwq):

#include #define ll long long

using namespace std;

const int max=100010;

const int mod=998244353;

int n,m,k,sum1,sum2,sum3,q;

int num[max],a[max],b[max],ans[max],mul[max],rank[max],inv[max];

inline int get_int()

for(;isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+c-'0';

return x*f;

}inline void print(int x)

inline int ksm(int a,int b)

return ans;

}inline void pre()

inline int c(int n,int m)

int main()

} for(int i=1;i<=n;i++) print(ans[i]),putchar('\n');

return 0;

}

BZOJ5368 Pkusc2018 真實排名

time limit 10 sec memory limit 256 mb 小c是某知名比賽的組織者,該比賽一共有n名選手參加,每個選手的成績是乙個非負整數,定義乙個選手的排名是 成績不小於他的選手的數量 包括他自己 例如如果333位選手的成績分別是 1,2,2 那麼他們的排名分別是 3,2,2 擁...

BZOJ5368 Pkusc2018 真實排名

description 小c是某知名比賽的組織者,該比賽一共有n名選手參加,每個選手的成績是乙個非負整數,定義乙個選手的排名是 成績不小於他的選手的數量 包括他自己 例如如果3位選手的成績分別是 1,2,2 那麼他們的排名分別是 3,2,2 擁有上帝視角的你知道所有選手的實力,所以在考試前就精準地估...

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