4、 奶牛曬衣服
方法一: 利用貪心的思想,每次烘乾最濕的那個衣服,考慮到資料是 50 萬, 可以用堆維護一下,複雜度是 o(nlogn)。
方法二: 根據天數的單調性,可以二分答案,題目相當於多了乙個已知條件, 判斷 mid 天是否能夠全部烘乾。複雜度是(nlog^2n)
貪心:
a) 貪心題,每次把烘乾機用給最溼的衣服,所以要在每一次烘乾機、 後將濕度排序,每次吹風吹最溼的即可。
b) 如果用 sort 函式需要使用 n 次,會超時,我們利用大根堆(優先 佇列)維護資料;
c) 計算,得出結果。
附**:
二分答案:
#include
#include
#include
#include
using
namespace
std;
int main()
long
long mid;
while(l<=r)
printf("%lld",l);
}
貪心(1):
#include
#include
#include
using namespace std;
priority_queueq;
int n,a,b,t;
int data[500010];
int main()
while(q.top()-t*a>0)
printf("%d",t);
return
0;}
貪心(2):
#include
#include
#include
using
namespace
std;
priority_queue q;
int n,a,b;
int main()
while(!q.empty()) //如果佇列不為空,即還有衣服沒晾乾;
printf("%d",t);
return
0;}
luogu P1843 奶牛曬衣服
模擬t1,貪心 排序或者二分都行 貪心策略很好想,顯然每次曬耗時最久的衣服最優,問題是要在每次曬完後都再次找到耗時最久的衣服,不能每次都sort,所以單調佇列或者大根堆 二分也不難,直接二分時間,篩一遍衣服統計需要烘乾的時間然後判斷是否滿足就行 模擬的時候敲了貪心 排序,所以這裡放二分的 滑稽 個人...
Luogu1843 奶牛曬衣服
題目大意 你要曬n件衣服,第i件衣服有w i 滴水,每件衣服每秒鐘會自然風乾a滴水,將這件衣服放入烘乾機中每秒鐘會烘乾a b滴水。一秒鐘不可以拆開,問曬乾所有的衣服至少要多少時間?思路 二分答案判斷可行性。1 include2 include3 inline int getint 10const i...
題解 P1843 奶牛曬衣服
先奉上 本人的手打大根堆。標頭檔案需要 也可以不要,把建構函式刪了就是 struct heap 建構函式 inline void insert const int key inline void maintain const int increment inline int get return h...