洛谷 P1759 通天之潜水
2016-11-10 11:58
134 查看
题目背景
直达通天路·小A历险记第三篇
题目描述
在猴王的帮助下,小A终于走出了这篇荒山,却发现一条波涛汹涌的河拦在了自己的面前。河面上并没有船,但好在小A有n个潜水工具。由于他还要背重重的背包,所以他只能背m重的工具,又因为他的力气并不是无限的,河却很宽,所以他只能背有v阻力的工具。但是这条河下有非常重要的数据,所以他希望能够停留的时间最久。于是他找到了你,让你告诉他方案。
输入输出格式
输入格式:
三个数m,v,n如题目所说
接下来n行,每行三个数ai,bi,ci分别表示所含的重力,阻力,能够支撑的时间
输出格式:
第一行一个数,表示最长的时间
接下来一行,若干个数,表示所选的物品
输入输出样例
输入样例#1:
100 100 3
50 60 289
40 10 116
50 50 106
输出样例#1:
405
1 2
说明
1<=m,v<=200,n<=100
数据保证一定有方案。
若有多种方案,输出前面尽量小的方案。
【分析】
二维费用背包统计方案。小水题
【代码】
直达通天路·小A历险记第三篇
题目描述
在猴王的帮助下,小A终于走出了这篇荒山,却发现一条波涛汹涌的河拦在了自己的面前。河面上并没有船,但好在小A有n个潜水工具。由于他还要背重重的背包,所以他只能背m重的工具,又因为他的力气并不是无限的,河却很宽,所以他只能背有v阻力的工具。但是这条河下有非常重要的数据,所以他希望能够停留的时间最久。于是他找到了你,让你告诉他方案。
输入输出格式
输入格式:
三个数m,v,n如题目所说
接下来n行,每行三个数ai,bi,ci分别表示所含的重力,阻力,能够支撑的时间
输出格式:
第一行一个数,表示最长的时间
接下来一行,若干个数,表示所选的物品
输入输出样例
输入样例#1:
100 100 3
50 60 289
40 10 116
50 50 106
输出样例#1:
405
1 2
说明
1<=m,v<=200,n<=100
数据保证一定有方案。
若有多种方案,输出前面尽量小的方案。
【分析】
二维费用背包统计方案。小水题
【代码】
//洛谷 通天 #include<stack> #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define fo(i,j,k) for(i=j;i<=k;i++) using namespace std; int n,m,t; int g[105],f[105],v[105]; int dp[205][205]; bool ans[205][205][105]; int main() { int i,j,k,p; scanf("%d%d%d",&m,&t,&n); fo(i,1,n) scanf("%d%d%d",&g[i],&f[i],&v[i]); fo(i,1,n) for(j=m;j>=g[i];j--) for(k=t;k>=f[i];k--) if(dp[j-g[i]][k-f[i]]+v[i]>dp[j][k]) { dp[j][k]=dp[j-g[i]][k-f[i]]+v[i]; fo(p,1,i) ans[j][k][p]=ans[j-g[i]][k-f[i]][p]; ans[j][k][i]=1; } else if(dp[j-g[i]][k-f[i]]+v[i]==dp[j][k]) { bool flag=0; fo(p,1,i) if(ans[j][k][p] && !ans[j-g[i]][k-f[i]][p]) break; else if(!ans[j][k][p] && ans[j-g[i]][k-f[i]][p]) {flag=1;break;} if(flag) fo(p,1,i) ans[j][k][p]=ans[j-g[i]][k-f[i]][p],ans[j][k][i]=1; } printf("%d\n",dp[m][t]); fo(i,1,n) if(ans[m][t][i]) printf("%d ",i); return 0; }
相关文章推荐
- 洛谷P1759 通天之潜水
- 洛谷 P1759 通天之潜水
- 洛谷 P1759 通天之潜水
- 通天之潜水(洛谷 1759)
- 洛谷 通天系列 P1760 P1757 P1759
- |洛谷|动态规划|P1757 通天之分组背包
- luogu P1759 通天之潜水
- 洛谷P1757 通天之分组背包
- 洛谷P1757 通天之分组背包
- 洛谷 P1757 通天之分组背包
- 洛谷——P1757 通天之分组背包
- 洛谷 P1760 通天之汉诺塔
- 洛谷 P1760 通天之汉诺塔
- 洛谷P1757 通天之分组背包 [2017年4月计划 动态规划06]
- 洛谷 P1164 小A点菜
- 洛谷P3950 部落冲突
- HH的项链 洛谷1972 莫队 c++
- 洛谷3690 link-cut-tree模板 动态树
- 树形dp-洛谷 P2014 选课
- 洛谷 P3386 二分图最大匹配模板