洛谷P1843 奶牛晒衣服
阿新 • • 發佈:2018-12-17
題目背景
熊大媽決定給每個牛寶寶都穿上可愛的嬰兒裝 。 於是 , 為牛寶寶洗晒衣
服就成了很不爽的事情。
題目描述
熊大媽請你幫助完成這個重任 。 洗完衣服後 , 你就要弄乾衣服 。 衣服在
自然條件下用 1 的時間可以晒乾 A 點溼度 。 摳門的熊大媽買了 1 臺烘衣機 。
使用烘衣機可以讓你用 1 的時間使 1 件衣服除了自然晒乾 A 點溼度外,還
可以烘乾 B 點溼度,但在 1 的時間內只能對 1 件衣服使用。
N 件衣服因為種種原因而不一樣溼 , 現在告訴你每件衣服的溼度 , 要你
求出弄乾所有衣服的最少時間(溼度為 0 為幹 ) 。
輸入輸出格式
輸入格式:
第一行 N , A , B ;接下來 N 行,每行一個數,表示衣服的溼度( 1 ≤ 溼
度, A , B ≤ 500000 , 1 ≤ N ≤ 500000 ) 。
輸出格式:
一行,弄乾所有衣服的最少時間。
輸入輸出樣例
輸入樣例#1:
3 2 1 1 2 3 輸出樣例#1: 1 說明
第 1 個時間內,用機器處理第 3 件衣服,此外,所有衣服自然晒乾 。 花
費 1 時間全部弄乾。
我來水部落格啦
這道題是一個神奇的貪心
就每次烘乾最溼的一件衣服就行了
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,a,b,t = 0; int f[500003]; int main() { scanf("%d%d%d",&n,&a,&b); for(int i = 1;i <= n;i++) { int x; scanf("%d",&x); f[x]++; t = max(t,x); } int ans = 0; while(a * ans < t)//如果現在的時間足夠烘乾最溼的衣服,那就可以烘乾所有衣服 { ans++; f[t]--; if(t - b > 0)f[t - b]++; while(f[t] == 0)t--;//找最溼的衣服 } printf("%d\n",ans); return 0; }