P2107 小Z的AK計畫(優先佇列 貪心)

2022-02-28 17:12:43 字數 754 閱讀 8014

水一發優先佇列的水題。。

這個題貌似以前有做過類似的。具體的方法是用大根堆輔助貪心演算法得出正解。可以看出來,如果小z走到了某個地方,那麼他最遠一定是到了這裡,不可能有再走回來這種操作,因為很明顯那樣不是最優解。

然後我們基於剛才的考慮貪心,如果走的遠近確定了,那麼我們的選擇一定是最小的那些店,維護乙個大根堆,然後從小到大列舉位置,每列舉一次就入隊乙個數,如果當前的總和比疲勞值大了,就彈出隊首元素。記得開longlong。

#include#include

#include

#include

#include

#include

#include

#define re register

#define ll long long

using

namespace

std;

ll n,m,ans,maxx,sum;

struct

market

;market a[

1000001

];priority_queue

q;inline

bool

cmp(market x,market y)

intmain()

sort(a+1,a+n+1

,cmp);

ll k=0

;

while(kans=max(maxx,ans);

}cout

<}

洛谷P2107 小Z的AK計畫

題目大意 有 n 個物品,第 i 個物品在 p i 大小為 w i 你在 0 要求移動距離加上大小總和小於 m 問你最多可以拿多少物品 題解 貪心,按距離排序,每次遇到乙個物品就把大小加入乙個大根堆,若堆中元素大小和加上距離大於 m 就把最大值刪去,直到符合 卡點 無 c code include ...

小Z的AK計畫

洛谷鏈結 在小z的家鄉,有機房一條街,街上有很多機房。每個機房裡都有一萬個人在切題。小z剛刷完codechef,準備出來逛逛。機房一條街有 n 個機房,第 i 個機房的座標為 xi 小z的家座標為 0。小z在街上移動的速度為1,即從 x1 到 x2 所耗費的時間為 x1 x2 每個機房的學生數量不同...

小Z的AK計畫

洛谷鏈結 在小z的家鄉,有機房一條街,街上有很多機房。每個機房裡都有一萬個人在切題。小z剛刷完codechef,準備出來逛逛。機房一條街有 n 個機房,第 i 個機房的座標為 xi 小z的家座標為 0。小z在街上移動的速度為1,即從 x1 到 x2 所耗費的時間為 x1 x2 每個機房的學生數量不同...