题目链接: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. project 的用法

    任务和子任务,树状结构: 点击一个绿色的箭头就可以实现. 时间的话:视图→甘特图→双击“开始时间”修改即可

  2. ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借

    ASP.NET MVC深入浅出系列(持续更新)   一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...

  3. Battery Charging Specification 1.2 中文详解

    转:       http://blog.csdn.net/liglei/article/details/228 1. Introduction 1.1 Scope 规范定义了设备通过USB端口充电的 ...

  4. 试验笔记 - 使用7-ZIP压缩来减小APK安装包体积

    7-ZIP版本:9.20 x86 And x64 Windows(2010-11-18) 1. 将APK包解压到文件夹2. 全选所有文件,右键“添加到压缩包”3.“压缩格式”必须“zip”4.“压缩等 ...

  5. sqlserver中的时间比较

    例子: select count(*) from table where DATEDIFF ([second], '2004-09-18 00:00:18', '2004-09-18 00:00:19 ...

  6. jdbc 链接池的优化

    package cn.itcast.jdbc.datasourse; import java.sql.Connection;import java.sql.DriverManager;import j ...

  7. centos安装python3.7.0过程记录

    参考自这里,整理出以下步骤. 一.下载python3.7.0包地址:https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 二.安装 登陆Li ...

  8. 彻底隐藏Nginx版本号的安全性与方法

    Nginx默认是显示版本号的,如: [root@bkjz ~]# curl -I www.nginx.orgHTTP/1.1 200 OKServer: nginx/0.8.44Date: Tue, ...

  9. MariaDB mysql 比较区别 选择

    MariaDB数据库管理系统是MySQL的一个分支 开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险. MariaDB的目的是 ...

  10. Unity3D 与 objective-c 之间数据交互。iOS SDK接口封装Unity3D接口 .-- 转载

    Unity 3D 简单工程的创建.与Xcode 导出到iOS 平台请看这 Unity3D 学习 创建简单的按钮.相应事件 Unity C# 代码 using UnityEngine; using Sy ...