codeforces C. Om Nom and Candies
Posted cleanerhgf
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces C. Om Nom and Candies相关的知识,希望对你有一定的参考价值。
题意:给两种糖,糖的重量分别为:Wr,Wb,糖的快乐值分别为:Hr,Hb。求吃不超过C重量的糖,最大的快乐值是多少。
思路:如果Hr / Wr > Hb / Rb, 假设Wr * Wb <= C ,如果取了Wb个r糖果,花去重量Wr * Wb,得到快乐值Wb * Hr。如果取Wr个b糖果,花去同样重量,得到快乐值Wr * Hb < Wb * Hr,所以枚举b糖果的数目不必超过Wr,当 Wr < sqrt(C)时,显然枚举小于sqrt(C)的次数即可。当Wr > sqrt(C) ,枚举所有情况次数为C / Wr < sqrt(C),所以也只需要枚举小于sqrt(C)次。所以总复杂度sqrt(C)即可解决问题。
#include <bits/stdc++.h> using namespace std; #define maxn 10010 typedef long long ll; int main() { ll c,hr,hb,wr,wb; cin >> c >> hr >> hb >> wr >> wb; ll ans = 0; ll nums = c / wr; for(int i = 1;i <= 100000;i++){ if(nums < 0)break; ans = max(ans, nums * hr + ((c - nums * wr) / wb) * hb); nums--; } nums = (c / wb); for(int i = 1;i <= 100000;i++){ if(nums < 0)break; ans = max(ans, nums * hb + ((c - nums * wb) / wr) * hr); nums--; } cout<<ans<<" "; return 0; }
以上是关于codeforces C. Om Nom and Candies的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces C - Om Nom and Candies
Codeforces 526C.Om Nom and Candies
Henu ACM Round#19 E Om Nom and Candies