zoukankan      html  css  js  c++  java
  • VIJOS-P1334 NASA的食物计划

    洛谷 P1507 NASA的食物计划

    https://www.luogu.org/problem/P1507

    JDOJ 1438: VIJOS-P1334 NASA的食物计划

    https://neooj.com/oldoj/problem.php?id=1438

    题目背景

    NASA(美国航空航天局)因为航天飞机的隔热瓦等其他安全技术问题一直大伤脑筋,因此在各方压力下终止了航天飞机的历史,但是此类事情会不会在以后发生,谁也无法保证,在遇到这类航天问题时,解决方法也许只能让航天员出仓维修,但是多次的维修会消耗航天员大量的能量,因此NASA便想设计一种食品方案,让体积和承重有限的条件下多装载一些高卡路里的食物.

    题目描述

    航天飞机的体积有限,当然如果载过重的物品,燃料会浪费很多钱,每件食品都有各自的体积、质量以及所含卡路里,在告诉你体积和质量的最大值的情况下,请输出能达到的食品方案所含卡路里的最大值,当然每个食品只能使用一次.

    输入格式

    第一行 两个数 体积最大值(<400)和质量最大值(<400)

    第二行 一个数 食品总数N(<50).

    第三行-第3+N行

    每行三个数 体积(<400) 质量(<400) 所含卡路里(<500)

    输出格式

    一个数 所能达到的最大卡路里(int范围内)

    输入输出样例

    输入 #1
    320 350
    4
    160 40 120
    80 110 240
    220 70 310
    40 400 220
    
    输出 #1
    550
    

    说明/提示

    很简单的背包...

    的确是很简单的背包,但是本蒟蒻开局爆零,无奈之下还是翻了题解。

    一开始的思路是这样的:

    分别统计最大体积和最大质量下的最大卡路里,然后各出一个答案取最大。但是这个思路显然是错的,因为在你满足体积最大的情况下不能保证质量也最大,同理,质量最大的情况下也不能保证体积冒没冒。

    所以我们转念一想。

    我同时维护两个量(体积、质量)不就可以了么?

    所以我们得出AC代码:

    #include<iostream>
    using namespace std;
    int a[51],b[51],c[51];
    int f[501][501];
    int main()
    {
        int i,j,l,m,n,k;
        cin>>m>>n>>k;
        for(i=1;i<=k;i++)
            cin>>a[i]>>b[i]>>c[i];
        for(i=1;i<=k;i++)
            for(j=m;j>=a[i];j--)
                for(l=n;l>=b[i];l--)
                    f[j][l]=max(f[j][l],f[j-a[i]][l-b[i]]+c[i]);
        cout<<f[m][n];
        return 0;
    }

    简单的背包,呵呵。

  • 相关阅读:
    个人作业1——四则运算题目生成程序
    软件工程的实践项目课程的自我目标
    个人附加作业
    个人作业3——个人总结(Alpha阶段)
    结对编程2——单元测试
    个人作业二——英语学习APP 案例分析
    结对编程 (201421123002,201421123006,201421123007)
    四则运算
    软件工程的实践项目课程的自我目标
    个人作业3——个人总结(Alpha阶段)
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11249792.html
Copyright © 2011-2022 走看看