P1507NASA食物
2024-10-16 01:29:24
这道题是一个01背包的延伸题,只要透彻理解了,就不难了。
这个题有两个T,一个是体积一个是质量,所以这时候我们必须要加一个for了,同时要优化空间(三维降二维),然后用f[j][k]来表示当体积为j,质量为k时的最大价值,加一个for,最后输出即可。
1.再去复习所有背包问题,再去推导方程,注意不同之处
2.j与k不要for到0,for到v[i]或m[i]即可
代码
#include<iostream>
#include<string>
#include<cstring>
#include<cstdio>
#define N 10001
using namespace std;
int dp[][];//当体积为T1,质量为T2时可以装下的
int T1,T2;//体积与质量
int v[],m[],value[];
int n;
int main(){
scanf("%d%d",&T1,&T2);
memset(dp,,sizeof(dp));
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d%d",&v[i],&m[i],&value[i]);
}
for(int i=;i<=n;i++){
for(int j=T1;j>=v[i];j--){
for(int k=T2;k>=m[i];k--){
dp[j][k]=max(dp[j][k],dp[j-v[i]][k-m[i]]+value[i]);
}
}
}
cout<<dp[T1][T2]; }
最新文章
- interpreter(解释器模式)
- spool命令
- 使用VS2015开发跨平台APP
- 折腾笔记之wordpress安装出现错误---【wordpress点击文章找不到网页的解决办法】
- DOM 之 SAX操作
- C#程序双击运行之后,界面不显示,但是在任务管理器有进程(一个winform找bug之旅)
- arcgis9.3 执行python文件
- xcode7.3 iTunes Store operation failed问题
- JDBC高级部分
- vsftp关于";550 create directory operation failed";问题解决
- selenium2使用记录
- c:set 存值
- java开发之提高java和mysql代码性能和质量
- [js高手之路] vue系列教程 - 绑定设置属性的多种方式(5)
- 安装/或更新node和npm
- 【Uva 10269 马里奥与公主的归途】
- 《Shazam It! Music Recognition Algorithms, Fingerprinting, and Processing》译文
- mysql中min和max查询优化
- Oauth2.0(一):为什么需要 Oauth2.0 协议?
- JavaWeb项目通过调用cmd实现备份数据库的功能