POJ1456(貪心 思維並查集)

2021-09-03 07:57:18 字數 903 閱讀 1373

poj1456(貪心並查集)

題意: 給定n個商品,每個商品有利潤pi和過期時間di,每天只能買乙個商品,過期不能再賣,求如何安排每天賣出的商品,可以使得收益最大。

資料範圍:1思路:

1)首先不難想到貪心先賣出價值最大的商品,先用按照價值從大到小sort排序。

2)我們貪心選擇在其過期的前一天(day-1)賣出,然後如何維護賣出一天後另外其他的商品不能再在同一天賣出,先思考兩個價值不一樣的商品u,v,u.p>v.p,但保質期都是同一天day,那麼u安排在day-1**,v再**時候發現day-1已經**過,那麼我們往前遞推day-2**,這樣遞迴往前的**商品,如果遞迴到最後day『=0那麼顯然不可以再**類似並查集的思想維護即可。

ac code:

#include

#include

#include

#include

using namespace std;

const

int maxn =

10000

+100

;struct node

}a[maxn]

;int fa[maxn]

;int

find

(int x)

intmain()

memset

(fa,-1

,sizeof

(fa));

sort

(a+1

,a+1

+n);

int ans=0;

for(

int i=

1;i<=n;

++i)

}printf

("%d\n"

,ans);}

return0;

}

POJ 1456 (貪心 並查集)

題目鏈結 有n件物品,每件物品有個價值和最後的保質期,如果物品在保質期內賣出能拿到對應的價值。沒件物品賣出要1天時間。問n件物品能拿到的最大價值。先貪心排序價值。值的先 而1到t時間段內空閒時間用並查集來維護。每次賣出一件時間。剩下的時間減1,直到為0 是剩下的時間,也就是fin t include...

POJ 1456 貪心 並查集

題目大意 給n個商品,每個商品有利潤pi和過期時間di,每天只能賣乙個商品,過期的不能再賣,求如何安排每天賣的東西使收益最大。題目思路 先將利潤從大到小排序,由於每個物品賣的越遲,給其他物品留下的空間也就越多,所以需要將物品放在能賣的最後一天賣。建立並查集,維護每個點最後乙個可以賣的地方,每賣出乙個...

poj 1456 貪心 並查集優化

題意 題目鏈結 有n個商品,每個商品有兩個屬性val 和day,val表示商品的價值,day 表示商品最後賣出去的期限,賣每個商品需要一天的時間。題解 貪心,貪心測率和hdu 1789 一樣。按照val從大到小排序。然後從第乙個開始,如果它的最後期限沒有被占用,這天就用來買這件商品,如果被占用就在這...