BZOJ5368 Pkusc2018 真實排名

2021-08-20 13:35:58 字數 1398 閱讀 5945

time limit: 10 sec  

memory limit: 256 mb

小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)翻倍,他的排名會變成第二,其他情況下都還是第一。

是一道水題!

是一道水題!!

是一道水題!!!

分兩種情況討論,不翻倍的話,≤a/2或≥a的隨意選k個,翻倍的話,≥a且<2a的數必須翻倍。

不願多說。

code:

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

#define n 100005

#define mod 998244353

using namespace std;

int n,k;

ll fac[n],inv[n],b[n];

struct node

a[n];

int cmp(node x,node y)

int eftw(int l,int r,int k)

int main()

for(int i=1;i<=n;i++)printf("%lld\n",b[i]);

}

BZOJ5368 Pkusc2018 真實排名

time limit 10 sec memory limit 256 mb submit 163 solved 83 小c是某知名比賽的組織者,該比賽一共有n名選手參加,每個選手的成績是乙個非負整數,定義乙個選手的排名是 成績不小於他的選手的數量 包括他自己 例如如果333位選手的成績分別是 1,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 ...