潜水员

原创 2013年12月04日 21:49:24

Problem Description

潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?
例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量:
3 36 120
10 25 129
5 50 250
1 45 130
4 20 119
如果潜水员需要5升的氧和60升的氮则总重最小为249(1,2或者4,5号气缸)。 你的任务就是计算潜水员为了完成他的工作需要的气缸的重量的最低值。

Input

输入有多组数据,对于每组数据第一行有2整数m,n(1<=m<=21,1<=n<=79)。它们表示氧,氮各自需要的量。第二行为整数k(1<=n<=1000)表示气缸的个数。此后的k行,每行包括ai,bi,ci(1<=ai<=21,1<=bi<=79,1<=ci<=800)3整数。这些各自是:第i个气缸里的氧和氮的容量及汽缸重量。

Output

对于每组输入输出仅一行包含一个整数,为潜水员完成工作所需的气缸的重量总和的最低值。

Sample Input

5 60
5
3 36 120
10 25 129
5 50 250
1 45 130
4 20 119

//    解题报告:简单二维01背包问题
//标程:
#include<stdio.h>
#include<string.h>
struct ss
{
    int x,y,z;
}p[1100];
int main()
{
    //freopen("a.txt","r",stdin);
    int n,m,k,i,j,l;
    int dp[25][100];
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        memset(dp,127,sizeof(dp));
        scanf("%d",&k);
        for(i=0;i<k;i++) 
            scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z);
        dp[0][0]=0;
        for(i=0;i<k;i++)
        {
            for(j=n;j>=0;j--)
            {
                for(l=m;l>=0;l--)
                {
                   int d=j+p[i].x;
                   if(d>n) d=n;
                   int d1=l+p[i].y;
                   if(d1>m) d1=m;
                   if(dp[d][d1]>dp[j][l]+p[i].z)
                       dp[d][d1]=dp[j][l]+p[i].z;
                }
            }
        }
        printf("%d\n",dp[n][m]);
    }
    return 0;
}

潜水员(二维费用的背包问题)

Description 潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体...
  • SSLGZ_yyc
  • SSLGZ_yyc
  • 2017年04月21日 19:27
  • 310

漫谈程序员系列:那些害死程序员的细节

这次,我们不谈权术,不谈潜规则,不谈技术,不谈理想,咱们就来说说那些害死程序员不偿命的工作细节……...
  • foruok
  • foruok
  • 2015年01月06日 06:39
  • 25258

重载前置,后置(自增运算符 ++ 和自减运算符 --)

如何重载增量运算符 ++ 和 -- 运算符++和--有前置和后置两种形式,如果不区分前置和后置,则使用operator++( )或operator--( )即可;否则,要使用operator...
  • imxiangzi
  • imxiangzi
  • 2015年10月12日 23:53
  • 1707

工作了3年的JAVA程序员应该具备什么技能?

工作了3年的JAVA程序员应该具备什么技能 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Ja...
  • dzzzheng95
  • dzzzheng95
  • 2017年02月11日 22:13
  • 2430

潜水员的问题

[POI1998] 潜水员的问题 ★★   输入文件:ple.in   输出文件:ple.out   简单对比 时间限制:1 s   内存限制:128 MB 【问题描述】     一个潜水...
  • yhb1216776494
  • yhb1216776494
  • 2013年06月24日 16:40
  • 656

Kinect小小玩偶游戏----小小潜水员

本文章由cartzhang编写,转载请注明出处。 所有权利保留。  文章链接:  作者:cartzhang Kinect小小玩偶游戏----小小潜水员 一、游戏说明 通过Kinect控...
  • cartzhang
  • cartzhang
  • 2015年04月08日 14:11
  • 1491

WUST 1873 潜水员 (二维背包) 【模板】

潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需...
  • qq_38538733
  • qq_38538733
  • 2017年07月12日 11:06
  • 115

潜水员(二维费用的背包问题)

Description 潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体...
  • SSLGZ_yyc
  • SSLGZ_yyc
  • 2017年04月21日 19:27
  • 310

ssl2290-潜水员【dp之二维费用】

其实这是一道例题,但确实是我做过最难(其他的水到炸)的一道二维费用 Description 潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的...
  • Mr_wuyongcong
  • Mr_wuyongcong
  • 2017年12月16日 09:23
  • 43

【例题】【背包动规】NKOJ1123 潜水员

NKOJ1123 潜水员 时间限制 : 10000 MS 空间限制 : 65536 KB问题描述 潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下...
  • Y__XV
  • Y__XV
  • 2016年10月04日 13:15
  • 262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:潜水员
举报原因:
原因补充:

(最多只允许输入30个字)