題意:
有一家列印店,列印超過一定分數後每份的單價就會降低,你需要列印一些檔案,你可以列印敲好的份數或者是多列印一些廢紙以湊得更低的**,問列印這些檔案所需的最小花費。題解:
採用貪心策略,從最單價低價開始計算,直到計算到數量的區間正好包含所需印刷的產品數量。**:但是單純採取貪心策略遍歷整個**陣列會tle,所以需要二分優化,先二分找到包含當前**的**區間,然後在當前區間內的**以及數量超過當前區間的區間中選取最低總價。
#include
#include
#include
using
namespace
std ;
#define max 100005
#define inf 0x7fffffffffffffff
struct node1
ans[max];
struct node
print[max];
bool comp1(const
struct node1&a , const
struct node1&b)
bool comp2(const
struct node1&a , const
struct node1&b)
int main()
for(int i = 0 ; i < m ; i ++)
sort(ans , ans+ m , comp1) ;
long
long temp = inf ;
int cnt = m-1 ;
for(int i = n - 1 ; i >= 0 ; i --)
cnt -- ;
}if(temp > print[i].sum)
}sort(ans , ans + m,comp2);
for(int i = 0 ; i < m ; i ++)
}return
0 ;}
hdu 4791 dp預處理 二分
題意 列印東西,給出區間 張數 對應費用 到達一定張數就都按某更低的 m次詢問,問最優費用。給的時候按張數遞增給的。dp出當前張數到最後的最小值。對於詢問q,然後二分處 q的最小的乙個張數的 min 這個 p,dp 這 1 即可。nlogn 後來看網上有些人用線段樹,沒必要的。ps 開始竟然因為犯中...
HDU 3650 貪心 二分
這個題資料量比較小,所以類似於模擬也可以做。按照起始時間排序,然後從最小的起點開始,找在這一天內能夠 的所有節目,寫了個二分優化了時間。include include include include define maxn 110 using namespace std typedef struct...
hdu 4864 Task 貪心 二分 set
題意 有n臺機器,m個任務,每台機器有xi,yi,每個任務也有xj,yj,當乙個任務可以被處理的條件是,xj xi 且 yj 貪心的話,如果是遍歷任務的話,那麼我們希望盡可能做時間和level更高的任務,我們可以先按時間排,時間相同按level,遞增排,機器也是按這個排。然後從最大價值的任務開始遍歷...