一天,歐姆諾諾姆來到了朋友家裡,他發現了許多糖果。有藍色和紅色兩種。他知道每顆紅色糖果重wr克,每顆藍色糖果重wb克。吃一顆藍色糖果會給他帶來hb的歡樂值,吃一顆紅色糖果會給他帶來hr的歡樂值。
歐姆諾姆最多只能吃c克的糖果,而且每一顆糖果不能只吃一半。現在他想通過吃藍色和紅色的糖果來獲得最大的歡樂值。
樣例解釋:每一種糖果吃兩顆即可。
input
單組測試資料。
輸入佔一行有四個整數c,hr,hb,wr,wb (1≤c,hr,hb,wr,wb≤10^9).
output
輸出最大可能獲得的歡樂值。
input示例
樣例輸入1
10 3 5 2 3
output示例
樣例輸出1
16從高質量糖果或低質量糖果選0個開始列舉,那麼為什麼列舉到sqrt(c)個呢?
假如高質量糖果或低質量糖果質量其中之一大於sqrt(c),那麼顯然相應的數量肯定小於 sqrt(c)
如果兩者質量都小於sqrt(c),那麼兩者質量最小公倍數t一定小於c,當低質量較小者(m1)數量(sum1)超過sqrt(c)時,那一定能將取質量高m2數量sum1/m2,因為質量相同情況下取m2更優,也就是說只要m1數量超過sqrt(c),那麼一定能取若干數量m2來取代m1會更優。(自己瞎幾把想的,希望有人有更好更嚴格的證明求教)。
#include
using
namespace
std;
int main()
cout
<}
}
51nod1548 歐姆諾姆和糖果
思路 只有兩種糖果,列舉其中一種糖果的數量就可以得到乙個可行解 但總有一種糖果的數量是較少的,並且該數量小於sqrt c 簡單證明 1。若有任一糖果的質量大於sqrt c 則必定有一糖果的數量小於sqrt c 2。若兩種糖果質量均小於sqrt c 則可能存在兩種糖果數量均大於sqrt c 的解,但對...
歐姆諾姆和糖果
一天,歐姆諾諾姆來到了朋友家裡,他發現了許多糖果。有藍色和紅色兩種。他知道每顆紅色糖果重wr克,每顆藍色糖果重wb克。吃一顆藍色糖果會給他帶來hb的歡樂值,吃一顆紅色糖果會給他帶來hr的歡樂值。歐姆諾姆最多只能吃c克的糖果,而且每一顆糖果不能只吃一半。現在他想通過吃藍色和紅色的糖果來獲得最大的歡樂值...
歐姆諾姆和項鍊
有一天,歐姆諾姆發現了一串長度為n的寶石串,上面有五顏六色的寶石。他決定摘取前面若干個寶石來做成乙個漂亮的項鍊。他對漂亮的項鍊是這樣定義的,現在有一條項鍊s,當s a b a b a a b a的時候是漂亮的,這兒a,b是一些寶石串,表示連線操作。s中有k 1個a和k個b組成。a和b可能是空串。現在...