description
在熊大媽英明的帶領下,時針和它的同伴生下了許多牛寶寶。熊大媽決定給每個寶寶都穿上可愛的嬰兒裝。於是,為牛寶寶洗曬衣服就成了很不爽的事情。
聖人王擔負起了這個重任。洗完衣服後,你就要弄幹衣服。衣服在自然條件下用1的時間可以曬乾a點濕度。摳門的熊大媽買了1台烘衣機。使用烘衣機可以讓你用1的時間使1件衣服除開自然曬乾的a點濕度外,還可烘乾b點濕度,但在1的時間內只能對1件衣服使用。
n件衣服因為種種原因而不一樣溼,現在告訴你每件衣服的濕度,要你求出弄幹所有衣服的最少時間(濕度為0為幹)。
input
第一行n,a,b;接下來n行,每行乙個數,表示衣服的濕度(1
<=濕度,a,b<=500000,1
<=n
<=500000)。
output
一行,最少時間。
sample input32
1123
sample output
1
解題思路:
首先看這道題的意思,我們可以很容易的得出每次選濕度最大的衣服去烘乾更優,那麼我們就可以用貪心的方法來做。比如樣例我們都插入q1中,那麼q1就為3 2 1,然後依次取出,第乙個 -a-b ,其他的 -a,插入q2,這時q2就為0 0 -1,這是就滿足題目要求,就把次數輸出。(至於滿足題目要求的判斷可以用乙個計數器,每次遇到乙個新的<=0的就+1)
我們發現,每次 -a-b 的就只有第乙個最大的數,而其他的都減了乙個 a 。所以換句話說就是所有都減 a ,而第乙個多減乙個 b 。那麼與其每個去減 a ,那還不如我們用乙個變數sum每次 +a ,這樣每次就只需要讓堆的跟(也就是最大的那個) -b 就ok了,最後只需要比較最大的那個是否 <=sum ,如果成立,就表示全部都<=sum 了。這就大大提高了效率!
這道題目表示虐pascal的堆,c++表示有許多關於堆的自帶函式,於是這道題目打得短,陣列都沒開!
code (no copy!僅供參考,若要給,請聘請)
#include
#include
#include
#define f(i,x,y) for(int i=x;i<=y;i++)
#define d(i,x,y) for(int i=x;i>=y;i--)
using
namespace
std;
const
int maxn=300050;
int n,a,b;
int x;
int ans=0;
priority_queue f;
inline
int read()
void init()
}void getout()
void work()
else
}}void check()
}int main()
奶牛曬衣服
392.奶牛曬衣服 描述 提交自定義測試 題目描述 在熊大媽英明的帶領下,時針和他的同伴生下了許多牛寶寶。熊大媽決定給每個寶寶都穿上可愛的嬰兒裝。於是,為牛寶寶洗曬衣服就成了很不爽的事情。聖人王擔負起了這個重任。洗完衣服後,你就要弄幹衣服。衣服在自然條件下用1的時間可以曬乾a點濕度。摳門的熊大媽買了...
奶牛曬衣服
熊大媽決定給每個牛寶寶都穿上可愛的嬰兒裝 於是 為牛寶寶洗曬衣服就成了很不爽的事情。熊大媽請你幫助完成這個重任 洗完衣服後 你就要弄幹衣服 衣服在自然條件下用 1 的時間可以曬乾 a 點濕度 摳門的熊大媽買了 1 台烘衣機 使用烘衣機可以讓你用 1 的時間使 1 件衣服除了自然曬乾 a 點濕度外,還...
奶牛專題2 奶牛曬衣服
問題描述 在熊大媽英明的帶領下,時針和它的同伴生下了許多牛寶寶。熊大媽決定給每個寶寶都穿上可愛的嬰兒裝。於是,為牛寶寶洗曬衣服就成了很不爽的事情。聖人王擔負起了這個重任。洗完衣服後,你就要弄幹衣服。衣服在自然條件下用1的時間可以曬乾a點濕度。摳門的熊大媽買了1台烘衣機。使用烘衣機可以讓你用1的時間使...