CF1042A Benches 優先佇列

2022-02-27 06:10:10 字數 794 閱讀 8635

題意裡讓你求的是來了m個人後人數最多的長椅上最少和最多有多少人

如果要求最多,很好辦,m個人都擠到原來人數最多的長椅上了(一眼看出)

但如果要求最少呢?

大家看圖

長椅某個時間的人數如圖

顯然,如果你往最高峰上放(怕不是石樂志),一定會增加答案

自然不是最優

那我們怎麼辦呢?

填坑就好了

每次找見坑,把人填進去

我們看mmm,只有10000,nnn只有100

mlognlog_nlogn​無壓力

所以我們可以開乙個優先佇列(小根堆)

每次選最小的乙個拿出來,加上乙個人

再放回去

最後小根堆的最後一項就是答案

#include#include#include#include#include#define rii register int i

#define rij register int j

using namespace std;

int x[105],n,m,maxn;

priority_queueq;

int main()

maxn+=m;

for(rii=1;i<=m;i++)

int kkk=0;

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

kkk*=-1;

cout

CF1042A Benches(二分答案)

掛個鏈結codeforces 題目大意 給你 n 個長椅,每張長椅上面有 a i 個人,現在有m個人來了,求讓著m個人坐上去後長椅上的人的最大數和最小數 分析 本題的要求為最大化最大值和最小化最大值,所以看到第二個我們考慮二分答案。include include include include in...

1042 小丑排序

你在信天翁馬戲團 是的,它是由一群小丑組成 從事管理工作,你剛剛寫完乙個程式的輸出是將他們的姓名按長度為非遞減的方式排列,名稱列表 使每名至少只要它之前的 然而,你的老闆不喜歡這種輸出方式,而是希望輸出出現更對稱,較短的字串在頂部和底部,而較長的字串在中間。他的規則是,每一對名稱都是在該列表的相對的...

CF 2022一月CF之旅

太咕了,太咕了,人快沒了.jpg 雖然考試上是第一道題,但應該第一時間想到dp n100 然後列狀態,前兩維度很容易想到是前i個中選j個,經過思考後,我們要求在選定k個杯子,此時裝水為l,然後選取的最大容積為多少的狀態。之後列dp轉移即可。慚愧 cf1257d 參考題解 2e5資料範圍很容易想到貪心...