UVA

来源:互联网 发布:海尔网络电视价格 编辑:程序博客网 时间:2024/06/06 10:21

根据两种情况 选择不同枚举

哇!  这题开始用 int 类型的数写的,只有 存最大 价值量的 mix_ 用了long long ,结果交了一遍 wa ,查了一遍 没问题啊??

后来意识到 max 函数中 我用了 强制类型转换,然后 全改成 long long ,,, but   结果是乱码! 然后开始 加标记 查错,查到最后发现 输出中有一个  %d 还没改成 %lld,恶心!!

#include <iostream>#include <cstdio>#include <algorithm>typedef long long LL;using namespace std;LL n, m, s1, v1 ,s2, v2, kase = 1;const int N = 50000;void solve() {    LL max_ = 0;    if(s1 < s2) { swap(s1, s2); swap(v1, v2); } // s1 大    LL t = m / s1;    if(t > N) {        for(LL i = 0; i < s1; ++i)     // 可选择的 物品2 的个数            max_ = max(max_, (i*v2 + ((m-i*s2)/s1)*v1));        for(LL i = 0; i < s2; ++i)     // 可选择的 物品1 的个数            max_ = max(max_, (i*v1 + ((m-i*s1)/s2)*v2));    }    else {        for(LL i = 0; i <= t; ++i) {            max_ = max(max_, (i*v1 + ((m-i*s1)/s2)*v2));        }    }    printf("Case #%lld: %lld\n", kase++, max_);}int main() {    scanf("%d", &n);    while(n--) {        scanf("%lld%lld%lld%lld%lld",&m, &s1, &v1, &s2, &v2);        solve();    }    return 0;}


0 0
原创粉丝点击