CodeForces 540B 填數找中位數

2021-07-15 12:59:54 字數 722 閱讀 9964

題意:

第一行 n,k,p,x,y,有n個任務,已經完成了k個任務,完成任務最大得分為p,最大得分總和是x,眾多分數得分的中位數是y,問剩下的任

務該得多少分才能保證分數總和不大於x,而且中位數不小於y。如果不可能出現這種情況則輸出-1。

輸入:

5 3 5 18 4

3 5 4

5 3 5 16 4

5 5 5

輸出:

1 4 -1

分析:就是乙個不斷的新增新數,判斷中位數的題目,首先統計已經得到的分數中比y小的分數個數和比y大的分數個數,之後找兩個臨時 變

量l,r表示中位數兩邊的臨界位置,如果中位數大於y,將 l 移動到即將進行任務的位置,如果中位數小於y,則將 l 移動到開頭位置,將

r 移動到不小於y的臨界位置,之後至於要保證得分總和不大於x 的前提下,不斷地在 l 前面新增1,在 l 後面新增y 就好。只有兩種

情況會輸出-1,已經完成的任務中,中位數小於y,或者最後的得分總和大於x.

**:

#include using namespace std;

int main()

else

if(l+r*y+sum>x)

cout <<-1<1)

cout <<' ';

if(i<=l)

cout <<1;

else

cout <

CODEFORCES 535B 解題報告

仍然是水題,但是還是有可以說的地方。主要思路就是dfs可重排列。4,7組成的幸運數字,在n位數字的構造方式有2 n種,而資料是最多9位,則列舉只有512種,n 2的複雜度足矣。只列舉相應位數的4 7排列,前面的個數用2 n累加。只要遵循先選4再選7即可構造字典順序,然後查詢相應數。以下是 可直接ac...

CodeForces 816B(區間計數)

codeforces 816b 題意 給出n個區間和乙個k值,再給出q次詢問,每次詢問給出乙個區間,要求這個區間中的數在開始的n區間中出現次數不少於k次的數目。解法 將n個區間的每個數每出現一次就加一,最後統計q詢問的區間中不小於k的數的個數。寫這題主要是想講乙個常用的區間更新的方法,其實這題也可以...

Codeforces 965B 題解報告

當k 1時,取第乙個 的座標即可 當k 1時,需要求出每乙個點在上下左右四個方向所能到達的最遠處,記為up,down,left,right,再取上下方向和左右方向的和的最大值,即 max 0,up down k max 0,left right k n,k map int,input split a...