zoukankan      html  css  js  c++  java
  • SDUT2408 Pick apples(贪心+完全背包)

    题目链接

    分析:

    贪心不能解决背包问题在于,它无法保证能将背包装满,部分闲置的背包空间使每公斤背包空间的价值降低了。

    因此可以大范围用贪心,小范围用背包。

    注意:

    提交过程中WA了很多次,原因已查明, WA时用的int p, v;而AC用的是long long p, v; 题目中已明确给出数据范围,按理说int是可以的,不明白为什么会WA

    AC代码如下:

    #include <iostream>
    #include <vector>
    #include <cstring>
    #include <algorithm>
    #include <cstdio>
    #include <cmath>
    
    using namespace std;
    
    const int maxn = 10000;
    
    struct num{
        long long p, v;
        double val;
    }a[3];
    
    long long dp[maxn+1000];
    
    bool cmp(const num &a, const num &b){
        return a.val > b.val;
    }
    
    int main(){
        int T, n, m;
        long long s;
        scanf("%d", &T);
        for(int nCase=1; nCase<=T; nCase++){
            s = 0;
            for(int i=0; i<3; i++){
                scanf("%lld %lld", &a[i].v, &a[i].p);
                a[i].val = (double)a[i].p/a[i].v;
            }
            memset(dp, 0, sizeof(dp));
            scanf("%d", &m);
            if(m > maxn){
                sort(a, a+3, cmp);
                n = floor((double)(m-maxn+100)/a[0].v)+1;
                s = n*a[0].p;
                m -= n*a[0].v;
            }
            for(int i=0; i<3; i++){
                for(int j=a[i].v; j<=m; j++){
                    dp[j] = max(dp[j], dp[j-a[i].v]+a[i].p);
                }
            }
            printf("Case %d: %lld\n", nCase, s+dp[m]);
        }
    
        return 0;
    }
  • 相关阅读:
    [转]script之defer&async
    css3渐变gradient
    [转]提高 web 应用性能之 CSS 性能调优
    [转]深入了解 CSS3 新特性
    进程中t.start(), t.daemon() t.jion()的使用
    创建进程
    进程与进程之间通信Manager
    简版线程池
    Python上下文管理
    绝版线程池
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3032752.html
Copyright © 2011-2022 走看看