dp--upc2447
来源:互联网 发布:网络银商最重的判刑 编辑:程序博客网 时间:2024/04/30 15:10
2447: 吃饭
Time Limit: 1 Sec Memory Limit:64 MBSubmit: 10 Solved: 4
[Submit][Status][Web Board]
Description
桐桐放学了,在学校食堂吃起了饭….
这里的饭十分好吃,但是桐桐的钱有限且肚子空间有限(^_^),虽然每种饭有无限多,但他只能吃部分,且每一种饭可增加一定的能量。桐桐觉得自己有点胖,于是下了一个决心:我今天只吃第二多能量值的饭!
请你输出他所吃的饭的能量值。
注意:第二多能量值的饭一定不等于最多能量值。
Input
共n+l行。
第1行三个数n,m,o,表示有n种食物供选择(每种食物可以选无限次),桐桐带了m元钱,肚子空间为o。
第2行到第n+l行,每行3个数ai,bi,ci,分别表示第i个食物需要花ai元钱,占用bi个肚子空间,而获得ci个能量值。
Output
1行,为第二多的能量值,如果你没有第二多,则输出“error”。
Sample Input
10 7 34 1 1331 2 4204 1 985 3 7627 3 915 1 7462 2 9104 1 6552 2 2715 3 286
Sample Output
1565
学习了一个技巧,如何记录第二大的值,这种背包问题怎么做有待加强
学习了一个技巧,如何记录第二大的值,这种背包问题怎么做有待加强
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;int a[105],b[105],c[105],dp[1010][1010];int main (){ int N,M,O; while(scanf("%d%d%d",&N,&M,&O)!=EOF) { int i,j,k,m1=-INF,m2=-INF; memset(dp,-INF,sizeof(dp)); dp[0][0]=0; for(i=0; i<N; i++) cin>>a[i]>>b[i]>>c[i]; for(i=0; i<N; i++) for(j=a[i]; j<=M; j++) for(k=b[i]; k<=O; k++) { if(dp[j-a[i]][k-b[i]]+c[i]>m1) { m2=m1; m1=dp[j-a[i]][k-b[i]]+c[i]; } else if(dp[j-a[i]][k-b[i]]+c[i]>m2&&dp[j-a[i]][k-b[i]]+c[i]<m1) m2=dp[j-a[i]][k-b[i]]+c[i]; if(dp[j-a[i]][k-b[i]]+c[i]>dp[j][k]) dp[j][k]=dp[j-a[i]][k-b[i]]+c[i]; } if(m2==-INF) cout<<"error"<<endl; else cout<<m2<<endl; } return 0;}
- dp--upc2447
- dp
- dp
- dp
- 【DP】
- dp
- dp
- DP
- DP
- DP
- DP
- DP
- dp
- DP
- dp
- DP
- DP
- dp
- 技术面试时,那些令人心虚的问题
- linux线程相关函数
- zoj 3725
- 多校第八场
- [leetcode] Maximum Depth of Binary Tree
- dp--upc2447
- Tomcat类似Weblogic,管理自己的domains
- 【C/C++】Linux下system()函数引发的错误
- T-sql(SQL Server)
- ActivityManagerService分析
- 【C/C++】Linux下使用system()函数一定要谨慎
- 部署Wiki类系统Corendal Wiki的一点经验
- 数据库设计范式深入浅出
- linux下的setuid等函数