poj 2010(優先佇列)

2021-07-10 01:53:14 字數 358 閱讀 7287

題意: 奶牛大學:奶大招生,從c頭奶牛中招收n頭。它們分別得分score_i,需要資助學費aid_i。希望新生所需資助不超過f,同時得分中位數最高。求此中位數。

解題思路:這裡要求最大中位數,中位數肯定是在這些人中間,故可以列舉中位數,可以先對分數進行排序,然後用二分去找最大中位數。

每次列舉的中位數應該要檢驗是否滿足題意:

這裡有乙個check函式,它的返回值含義如下:

-1 直接輸出,不可能滿足條件了

0 這種方案是滿足條件的,可以把中位數調大試試

1 這種方案是不滿足的,但是把中位數調大就有可能滿足了(否則不可能滿足)

2 這種方案是不滿足的,但是把中位數調小就有可能滿足了(否則不可能滿足)

POJ 2010 優先佇列

題目大意 有c個牛,每個牛有分數c和學費f,現一共總可以提供f的學費給n個牛,問所有情況中c的中位數最大是多少 題目解析 首先按照c排序,再列舉每頭牛作為中位數進行判斷,先預處理出l和r陣列,代表第i頭牛左邊和右邊n 2頭牛f總和的最小值 一開始看著書上以為是二分,還能過,其實是不可以的,因為那個條...

POJ 2010 優先佇列

參考自 因為是找中位數嘛,所以不必關心這個值的左右到底是誰,只需要知道他可以滿足條件即可 先按照小牛的分數從小到大排個序 然後我們需要維護這個小牛的左邊和右邊 n 2 個小牛的最小資助金額 根據分析,就有了結構體 struct cowa maxn 最後只需要從大到小列舉 need lift righ...

POJ 2010 二叉堆 入門)

好像這題二分也可以做 話說這年頭寫堆都不用heapify 函式的?program p2010 const maxc 100000 maxn 19999 maxaid 100000 maxf 2000000000 type node record a,b longint end heap record...