zoukankan      html  css  js  c++  java
  • Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)

    题意:

    你有一个体积为N的箱子和两种数量无限的宝物。宝物1的体积为S1,价值为V1;宝物2的体积为S2,价值为V2。输入均为32位带符号的整数。你的任务是最多能装多少价值的宝物?

    分析:

    分类枚举, 取两者体积的最小公倍数, 看看在同体积不同数量的两种物品哪个价值大, 价值小的一定不会拿超过这个数目。

    #include<cstdio>
    #include<iostream>
    #include<vector>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int main(){
    //    freopen("1.txt","r", stdin);
    //    freopen("2.txt","w", stdout);
        long long t;
        cin >> t;
        long long kase = 1;
        while(t--){
            long long n, s1, v1, s2, v2;
            cin >> n >> s1 >> v1 >> s2 >> v2;
            long long max_val = -1;
            if(s2 * v1 > s1 * v2){//说明物品2不会挑选超过s1个,枚举 物品2
                long long k = s1;
          
                k = min(s1, n/s2);
                for(long long t = k; t >= 0; t--){
                    long long val = t * v2;
                    long long remain_s = n - t * s2;
    
                    if(remain_s >= s1) val += (remain_s/s1) * v1;
    
                    max_val = max(max_val, val);
                }
            }else{//说明物品1不会挑选超过s2个,枚举 物品1
                long long k = s2;
                k = min(s2, n/s1);
    
                for(long long t = k; t >= 0; t--){
                    long long val = t * v1;
                    long long remain_s = n - t * s1;
                    if(remain_s >= s2) val += (remain_s/s2) * v2;
                    max_val = max(max_val, val);
                }
            }
            cout << "Case #" << kase++ << ": " << max_val << "
    ";
        }
    }
  • 相关阅读:
    一直追求技术好吗?
    设计模式前言
    vba 行 列 单元格 统计
    JavaScript 仿LightBox内容显示效果
    Excel 比大小
    多态
    JavaScript 图片切换展示效果
    vba 单元格 一系例操作
    关于Flex的争论(富客户端、弱客户端)
    input文本框样式代码实例
  • 原文地址:https://www.cnblogs.com/Jadon97/p/8540542.html
Copyright © 2011-2022 走看看