HDU4864 貪心好題

2022-03-21 02:12:56 字數 1020 閱讀 7130

這道題的意識是給你n個機器和m個任務, 每個任務有兩個值花費時間x和難度y, 每個機器也有兩個值最大工作時間x1和最大工作難度y1, 機器可以勝任某個工作的條件是x1>=x && y1>=y,機器勝任乙個工作可以拿到x*500+2*y的錢,現在問你怎麼匹配才能使匹配數最大且錢數最多。 由於資料量過大我們考慮使用貪心來解決這道題, 由於x的權重遠大於y的權重,因此我們將工作按照x降序排列, x相同的時候按照y降序排列, 這樣就可以保證錢數最多,對於乙個工作我們可以選擇的是所有x1>x的機器, 而在這些機器中我們選擇最小的y1, 為什麼這樣選呢, 因為這樣選就可以保留比較大的y1使其去匹配後面的任務, 而x1則完全不用操心, 他肯定可以匹配後面的任務, 因為任務是按照x降序排列的, **如下:

#include using

namespace

std;

struct

node

}mach[

100000+100], task[100000+100

];int n, m; //

machine task

int s[150

];int

main()

; }

for(int i=0; i);}

sort(mach, mach+n);

sort(task, task+m);

int num = 0; //

匹配的數量

long

long money = 0

; memset(s,

0, sizeof

(s));

int j = 0

;

for(int i=0; i)

for(int k=task[i].y; k<=100; k++) if(s[k]>0

)

}printf(

"%d %lld\n

", num, money);

}return0;

}

hdu 4864 任務分配貪心

有n臺機器,m個任務,每台機器有xi時間,yi等級,每個任務也有xj,yj,當乙個任務可以被處理的條件是,xj xi 且 yj 對於每個任務,時間大的優先去匹配,時間相同的,等級大的優先去匹配,因為時間佔得多,時間多1就多500,而等級最多才差200。然後匹配的時候,盡量使用等級小的去匹配,而時間只...

hdu 4864 Task 貪心 技巧

題目鏈結 一道很有技巧的貪心題目。題意 有n個機器,m個任務。每個機器至多能完成乙個任務。對於每個機器,有乙個最大執行時間xi和等級yi,對於每個任務,也有乙個執行時間xj和等級yj。只有當xi xj且yi yj的時候,機器i才能完成任務j,並獲得 500 xj 2 yj金錢。問最多能完成幾個任務,...

hdu4415 貪心好題

刺客殺人使用自己的刀需要消耗一定的耐久度,或者用殺人得到的刀,問用盡可能少的代價殺盡可能多的人 首先,如果殺了乙個有刀的人,最優解中有刀的人全部被殺完 證明 假設最優解中殺了x,不殺y,那麼殺了x後再殺y並不會使得自己的刀的數量有所減少,這種情況還多殺了乙個人,則這個不是最優解,矛盾了 將結果分為兩...