poj1256(貪心 並查集)

2022-08-21 19:24:13 字數 685 閱讀 1471

題意:給n件商品的**和賣出截至時間,每乙個單位時間最多只能賣出一件商品,求能獲得的最大利潤。

思路:首先是貪心,為獲得最大利潤,優先考慮**最高的,所以要按**降序排列,另外每一件商品售出的時間應越後越好,比如a[i].p,a[i].d分別表示現在要售出的商品的**和截止日期,則應該從a[i].d開始往前找不衝突的點,若找的點大於0,則賣出,若為0即表示因衝突無法賣出。並查集可以很好的實現這一要求,用root[i]表示第i件商品的最近不衝突點,每次售出後需要更新最近的不衝突點。

ac**:

1 #include2 #include3 #include4

using

namespace

std;56

const

int maxn=10005;7

struct

nodea[maxn];

1011

bool

cmp(node x,node y)

1415

intn,root[maxn],res;

1617

int getr(int

k)21

22int

main()35}

36 printf("

%d\n

",res);37}

38return0;

39 }

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從大到小排序。然後從第乙個開始,如果它的最後期限沒有被占用,這天就用來買這件商品,如果被占用就在這...