题目链接:https://www.rqnoj.cn/problem/202

题意:

  登珠峰需要携带a(L)O2和t(L)N2。

  有n个气缸可供选择。其中第i个气缸能装下a[i](L)O2和t[i](L)N2,气缸重量为w[i]。

  问你在满足需求的前提下,最小的气缸总重量为多少。

题解:

  二重01背包。

  表示状态:

    dp[i][j][k]表示考虑到第i个气缸(还没选),已经能装下j(L)O2和k(L)N2。

    dp[i][j][k] = 此时的最小总重量

  找出答案:

    min dp[i][j][k] (j>=a && k>=t)

    (气缸编号为0~n-1)

  如何转移:

    由于此题与传统背包的区别为:氧气和氮气的容量需要大于等于所需体积。

    所以顺推。

    now: dp[i][j][k]

    dp[i+1][j][k] = max dp[i][j][k] (不选)

    dp[i+1][j+a[i]][k+t[i]] = max dp[i][j][k] + w[i]

  注:数据较水,可以不用考虑氧气拿的很少不够需求,而氮气大大超出需求的极端情况。

AC Code:

// state expression:
// dp[i][j][k] = min weight of cylinders
// i: considering ith cylinder
// j: O2
// k: N2
//
// find the answer:
// min dp[n][>O2][>N2]
//
// transferring:
// now: dp[i][j][k]
// dp[i+1][j][k] = min dp[i][j][k]
// dp[i+1][j+co2[i]][k+cn2[i]] = min dp[i][j][k] + w[i]
//
// bound:
// dp[0][0][0] = 0
// others = -1 #include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 2005
#define MAX_O2 50
#define MAX_N2 170
#define INF 10000000 using namespace std; int n;
int ans;
int o2,n2;
int co2[MAX_N];
int cn2[MAX_N];
int w[MAX_N];
int dp[MAX_N][MAX_O2][MAX_N2]; void read()
{
cin>>o2>>n2>>n;
for(int i=;i<n;i++)
{
cin>>co2[i]>>cn2[i]>>w[i];
}
} void solve()
{
ans=INF;
memset(dp,-,sizeof(dp));
dp[][][]=;
for(int i=;i<n;i++)
{
for(int j=;j<=o2;j++)
{
for(int k=;k<=n2;k++)
{
if(dp[i][j][k]!=-)
{
if(dp[i+][j][k]==- || dp[i+][j][k]>dp[i][j][k])
{
dp[i+][j][k]=dp[i][j][k];
}
if(dp[i+][j+co2[i]][k+cn2[i]]==- || dp[i+][j+co2[i]][k+cn2[i]]>dp[i][j][k]+w[i])
{
dp[i+][j+co2[i]][k+cn2[i]]=dp[i][j][k]+w[i];
if(j+co2[i]>=o2 && k+cn2[i]>=n2) ans=min(ans,dp[i+][j+co2[i]][k+cn2[i]]);
}
if(j>=o2 && k>=n2) ans=min(ans,dp[i][j][k]);
}
}
}
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}

RQNOJ 202 奥运火炬登珠峰:01背包的更多相关文章

  1. RQNOJ 329 刘翔!加油!:01背包

    题目链接:https://www.rqnoj.cn/problem/329 题意: 刘翔有n封信,每封信都有自己的欣赏价值value[i].消耗时间time[i].消耗体力h[i].和得到的鼓舞w[i ...

  2. UVALive 4870 Roller Coaster --01背包

    题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F ,     D -= K 问在D小于等于一定限度的时 ...

  3. POJ1112 Team Them Up![二分图染色 补图 01背包]

    Team Them Up! Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7608   Accepted: 2041   S ...

  4. Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)

    传送门 Description Hasan and Bahosain want to buy a new video game, they want to share the expenses. Ha ...

  5. 51nod1085(01背包)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1085 题意: 中文题诶~ 思路: 01背包模板题. 用dp[ ...

  6. *HDU3339 最短路+01背包

    In Action Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  7. codeforces 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses ——(01背包变形)

    题意:给你若干个集合,每个集合内的物品要么选任意一个,要么所有都选,求最后在背包能容纳的范围下最大的价值. 分析:对于每个并查集,从上到下滚动维护即可,其实就是一个01背包= =. 代码如下: #in ...

  8. POJ 3624 Charm Bracelet(01背包)

    Charm Bracelet Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34532   Accepted: 15301 ...

  9. (01背包变形) Cow Exhibition (poj 2184)

    http://poj.org/problem?id=2184   Description "Fat and docile, big and dumb, they look so stupid ...

随机推荐

  1. 微信小程序-封装请求(GET、POST)

    使用:先导入到util.js 最后在页面上导入util.js(路径自改) var util = require('../../util.js'); 使用示例GET:util.SEND(url,'GET ...

  2. thinkphp5 中使用postgresql 缺少函数 table_msg

    参考解决办法 在postgresql 中执行命令 插入函数 https://blog.csdn.net/sinat_35767703/article/details/76070236?utm_sour ...

  3. eclipse 安装java web插件

    1.eclipse java web搭建以及tomcat配置: http://www.cnblogs.com/yangyxd/articles/5615965.html 注意选择Eclipse IDE ...

  4. hdu 4372 第一类斯特林数

    #include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...

  5. 调用android系统相机拍照并保存

    [java] view plaincopyprint? <span style="font-size:18px;">package com.demo; import j ...

  6. 【阿里云】Windows2008 FTP配置指南

    云服务器默认使用Windws 2008 IIS 中自带的FTP服务器.    1.添加FTP帐号    A. 选择[服务管理器]--[配置]--[本地用户和组]--[用户]:在空白处右键选择[新用户] ...

  7. C​P​U​_​C​S​t​a​t​e​_​P​S​t​a​t​e and then ACPI on Wiki

    http://wenku.baidu.com/link?url=eHbdT4EjdJx3dsQETGUIL8q1K3_EyuzGLWT0G103AEca0vs0gHR_v_3c0oaUL2gbkrr8 ...

  8. vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误

    1.当vs2010编译qt时会出现以下错误: 1>------ 已启动全部重新生成: 项目: MyDialog, 配置: Debug Win32 ------            1>生 ...

  9. 用buildroot qemu 执行 Android 系统

    准备 qemu. 编译 arm 的执行环境 $ wget http://wiki.qemu-project.org/download/qemu-2.0.0.tar.bz2 $ tar xzvf qem ...

  10. Java 8 Collectors to Map

    1. 介绍 在本教程中,我们将讨论Collectors类的toMap()方法.我们使用它将流收集到一个Map实例中. 对于本教程中涉及的所有示例,我们将使用图书列表作为数据源,并将其转换为不同的Map ...