zoukankan      html  css  js  c++  java
  • P1794 装备运输_NOI导刊2010提高(04)

    P1794 装备运输_NOI导刊2010提高(04)

    题目描述

    德国放松对英国的进攻后,把矛头指向了东边——苏联。1943年初,东线的战斗进行到白热化阶段。据可靠情报,90余万德国军队在库尔斯克准备发动浩大攻势。因此,朱可夫元帅要求你立即从远东的军工厂运输大量装备支援库尔斯克前线。列车司机告诉你,一趟列车最多可以容纳V体积的武器装备,但是你可能不能装满,因为列车承受不了那么大的重量,一趟列车最多可以承载C单位的重量。同时,军工厂仓库提供给你一份装备清单,详细记录了每件装备的体积、重量和火力。为了有效支援朱可夫元帅,你要找到一种方案,使得总火力值最大。

    输入输出格式

    输入格式:

    第一行:V和G表示最大体积和重量。

    第二行:N表示仓库有N件装备。

    第三到N + 2行:每行3个数Ti Vi Gi表示各装备的火力值、体积和重量。

    输出格式:

    输出一个数,表示可能获得的最大火力值。

    输入输出样例

    输入样例#1:
    6 5 
    4
    10 2 2
    20 3 2 
    40 4 3 
    30 3 3 
    
    输出样例#1:
    50
    

    说明

    对于100%的数据,V,G,N≤500

    01背包,f[j][k] 表示体积为j,质量为k,设计的最大火力,f[j][k] = max(f[j-v[i]][k-g[i]]+t[i],f[j][k]);

     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 int f[510][510];
     5 int v[510],g[510],t[510];
     6 int n,V,G;
     7 
     8 int main()
     9 {
    10     scanf("%d%d%d",&V,&G,&n);
    11     for (int i=1; i<=n; ++i)
    12         scanf("%d%d%d",&t[i],&v[i],&g[i]);
    13     for (int i=1; i<=n; ++i)
    14         for (int j=V; j>=v[i]; --j)
    15             for (int k=G; k>=g[i]; --k)
    16                 f[j][k] = max(f[j-v[i]][k-g[i]]+t[i],f[j][k]);
    17     printf("%d",f[V][G]);
    18     return 0;
    19 }
  • 相关阅读:
    linux分析工具之vmstat详解
    linux分析工具之top命令详解
    hadoop之yarn详解(命令篇)
    hadoop之yarn详解(基础架构篇)
    linux分析利刃之sar命令详解
    hadoop之mapreduce详解(优化篇)
    linux之find命令详解
    一个毫无用处的公众号封面生成器
    一个简单的计时器对比各种可迭代对象定义方式的速度区别
    python中的迭代器和生成器
  • 原文地址:https://www.cnblogs.com/mjtcn/p/7073502.html
Copyright © 2011-2022 走看看