hdu 4864 Task 貪心 二分 set

2021-07-10 15:47:55 字數 777 閱讀 8773

題意:

有n臺機器,m個任務,每台機器有xi,yi,每個任務也有xj,yj,當乙個任務可以被處理的條件是,xj<=xi 且 yj

貪心的話,如果是遍歷任務的話,那麼我們希望盡可能做時間和level更高的任務,我們可以先按時間排,時間相同按level,遞增排,機器也是按這個排。

然後從最大價值的任務開始遍歷,對於每乙個任務,找到第乙個大於等於任務【i】.x的機器,然後顯然就是在包括這台機器以後的所有機器裡找出乙個level最小(但大於等於任務)的機器咯。 

那麼只需要把 這台機器到最後一台機器丟進set裡,然後按level排序,每次二分找到那個我們要找的機器,然後erase掉即可。

當然下次再把機器丟進set裡的時候只需要丟到上一次最後一台即可。這樣保證了set這部分的複雜度是嚴格的nlogn咯。

所以總複雜度是m+nlogn咯

#include #include #include #include #include #include #include #include #include #include using namespace std;

const double pi=acos(-1.0);

double eps=0.000001;

__int64 max(__int64 a,__int64 b)

__int64 min(__int64 a,__int64 b)

}} printf("%i64d %i64d\n",cun,ans);

} return 0;

}

hdu 4864 Task 貪心 技巧

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

HDU 4864 Task(2014多校 貪心)

task 比賽當時思路想的差不多,感覺能過的,該處理的也都處理到了,最後還是沒過,可能是二分寫錯了吧 大意 給你n個機器,m個要完成的任務,每個機器跟任務都有兩個屬性,機器是最大工作時間跟等級,任務是需要工作的時間跟等級。完成乙個任務可以得到500 工作時間 2 等級 的報酬。完成任務的條件是機器的...

HDU 3650 貪心 二分

這個題資料量比較小,所以類似於模擬也可以做。按照起始時間排序,然後從最小的起點開始,找在這一天內能夠 的所有節目,寫了個二分優化了時間。include include include include define maxn 110 using namespace std typedef struct...