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;
    }

    简单的背包,呵呵。

  • 相关阅读:
    redis主从配置及哨兵
    解决Linux服务器 FIN_WAIT2 连接过多的问题
    jmeter集群
    Jmeter之TCP取样器
    pydoc
    Sikulix图形自动化
    apifox接口测试工具
    Airtest自动化测试工具
    NodeJs 入门到放弃 — 入门基本介绍(一)
    uni-app小白入门自学笔记(二)
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11249792.html
Copyright © 2011-2022 走看看