zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    窗口
    DataTemplateSelector
    CompositeCollection
    Drawing
    模板
    集合视图
    绑定
    动画
    【数据结构初学】(java实现篇)——队列(转)
    慕课学习手记!(完成查找书籍小程序~)
  • 原文地址:https://www.cnblogs.com/cleanerhgf/p/11951827.html
Copyright © 2011-2022 走看看