RQNOJ 329 刘翔!加油!:01背包
题目链接:https://www.rqnoj.cn/problem/329
题意:
刘翔有n封信,每封信都有自己的欣赏价值value[i]、消耗时间time[i]、消耗体力h[i]、和得到的鼓舞w[i]。
观看信件必须按照价值递增(大于)的顺序观看,不一定需要全看。
可是,刘翔在伤病中,时间和体力分别为t,m,同时看完之后体力不能为0。
问你受到的鼓舞最大为多少。
题解:
这道题里value[i]真的没有用。。。
表示状态:
dp[i][j][k] = max encouraging
i:考虑到第i封信
j:花费的时间
k:花费的体力
找出答案:
ans = max dp[i][j][k] (0<=j<=t, 0<=k<m)
如何转移:
dp[i][j][k] = max(dp[i-1][j][k], dp[i-1][j-c[i]][k-h[i]] + w[i]) (01背包)
边界条件:
set dp = 0
AC Code:
// state expression:
// dp[i][j][k] = max encouraging
// i: ith letter was considered
// j: time cost
// k: hp cost
//
// find the answer:
// max dp[i][j][k] (0<=j<=t, 0<=k<m)
//
// transferring:
// dp[i][j][k] = max(dp[i-1][j][k], dp[i-1][j-c[i]][k-h[i]] + w[i])
//
// boundary:
// set dp = 0
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 105
#define MAX_T 105
#define MAX_H 105 using namespace std; int n,m,t;
int ans;
int w[MAX_N];
int c[MAX_N];
int h[MAX_N];
int dp[MAX_N][MAX_T][MAX_H]; void read()
{
cin>>n>>m>>t;
int v;
for(int i=;i<=n;i++)
{
cin>>v>>c[i]>>h[i]>>w[i];
}
} void solve()
{
memset(dp,,sizeof(dp));
ans=;
for(int i=;i<=n;i++)
{
for(int j=;j<=t;j++)
{
for(int k=;k<m;k++)
{
dp[i][j][k]=max(dp[i][j][k],dp[i-][j][k]);
if(j-c[i]>= && k-h[i]>=)
{
dp[i][j][k]=max(dp[i][j][k],dp[i-][j-c[i]][k-h[i]]+w[i]);
}
ans=max(ans,dp[i][j][k]);
}
}
}
} void print()
{
cout<<ans<<endl;
} int main()
{
read();
solve();
print();
}
RQNOJ 329 刘翔!加油!:01背包的更多相关文章
- RQNOJ 202 奥运火炬登珠峰:01背包
		
题目链接:https://www.rqnoj.cn/problem/202 题意: 登珠峰需要携带a(L)O2和t(L)N2. 有n个气缸可供选择.其中第i个气缸能装下a[i](L)O2和t[i](L ...
 - hdu3448 01背包+dfs
		
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3448 Description 0/1 bag problem should sound f ...
 - 背包问题(01背包,完全背包,多重背包(朴素算法&&二进制优化))
		
写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中~~最最最最最~~~~简单~~的背包问题 1. 首先,我们先介绍一下 01背包 大家先看一下这道01背包的问题 题目 有m件物品和一个容量为 ...
 - HDU 2191(多重背包转换为01背包来做)
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 Time Limit: 1000/1000 ...
 - UVALive 4870 Roller Coaster  --01背包
		
题意:过山车有n个区域,一个人有两个值F,D,在每个区域有两种选择: 1.睁眼: F += f[i], D += d[i] 2.闭眼: F = F , D -= K 问在D小于等于一定限度的时 ...
 - POJ1112 Team Them Up![二分图染色 补图 01背包]
		
Team Them Up! Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 7608 Accepted: 2041 S ...
 - 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 ...
 - 51nod1085(01背包)
		
题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1085 题意: 中文题诶~ 思路: 01背包模板题. 用dp[ ...
 - *HDU3339 最短路+01背包
		
In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
 
随机推荐
- 【AngularJS】【02】AngularJS应用骨架
			
※文件引自OneDrive,有些人可能看不到
 - vue.js+koa2项目实战(五)axios 及 vue2.0 子组件和父组件之间的传值
			
axios 用法: 1.安装 npm install axios --save-dev 2.导入 import axios from 'axios'; 3.使用 axios.post(url,para ...
 - VirtualBox 笔记
			
VirtualBox 笔记p=111" target="_blank"> http://www.youi5.com/?p=111 VirtualBox 虚拟机,由I ...
 - SAS学习经验总结分享:篇四—SQL过程
			
SQL过程 SQL过程是实现对数据集或关系数据库的表进行操作的过程,对数据集或关系数据库的表进行查询.修改.创建表.删除数据.插入数据和更新数据等功能.提现了SAS对大型数据库管理系统通用的SQL语言 ...
 - VueJS自定义全局和局部指令
			
除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令. 使用directive自定义全局指令 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面 ...
 - 文件I/O之C标准库函数和系统库函数差别
			
1.首先C标准库函数是工作在系统库函数之上的.C标准库函数在读写文件时候都有一个文件流指针.FILE*fp=NULL;// fp=fopen(F_PATH,"r"); fp文件流指 ...
 - ExtJs4学习(二):Dom操作
			
如今主流的JS框架要数ExtJs和JQuery应用的比較广泛.JQuery属于轻量级的,一般做站点应用比較常见.可见块头小的优势. ExtJs比較庞大,它除了对主要的JS语法和HTML DOM操作方式 ...
 - 分布式搜索elasticsearch 环境搭建
			
1.elasticsearch安装 elasticsearch的安装超级easy,解压即用(要事先安装好java环境). 到官网 http://www.elasticsearch.org下载最新版的 ...
 - HDFS源码分析之数据块Block、副本Replica
			
我们知道,HDFS中的文件是由数据块Block组成的,并且为了提高容错性,每个数据块Block都会在不同数据节点DataNode上有若干副本Replica.那么,什么是Block?什么又是Replic ...
 - mybatis前台传来一个String,后后台执行sql变成了true
			
实际上参数传来的是一个字符串 3 ,不知道为什么会变成true 最后当然是查不到信息了.. 我在mapper映射文件里面使用了动态的where查询,我觉得跟这个关系不太大, 现在不知道怎么办,希望有思 ...