标签:tool cal printf port oschina tags one 时间 inpu
小智:(灯泡一亮)每个地方都派人看守不就行了?!
“当~~~”
菜虫:(手执八公分直径炒锅,筋)……你是白痴吗?-_-##(都派人去看守的话我们会有多少桌三缺一?!)听好了,输入格式是第一行一个正整数N(1<=N<=100)表示总共的娱乐项目数;第二行一个正整数表示规定的时间t(0<t<1000);下面有N行,其中第i+2行有两个正整数fi(0<=fi<=100)和ti(0<ti<=100),分别表示对项目i的“喜欢度”和它所耗费的时间。输出的时候在第一行输出最大的“喜欢度”之和,下面给你一个样例:
3 5 1 2 5 5 4 3
5
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include<cstdio>#include<cstring>#include<algorithm>usingnamespacestd;//01背包二维正写写法intp[107],w[107],dp[107][1007];intmain(){intN,T;scanf("%d%d",&N,&T);for(inti=1;i<=N;i++){scanf("%d%d",&p[i],&w[i]);}memset(dp,0,sizeof(dp));for(inti=1;i<=N;i++){for(intj=0;j<=T;j++){if(j>=w[i])dp[i][j] = max(dp[i-1][j],dp[i-1][j-w[i]]+p[i]);elsedp[i][j] = dp[i-1][j];}}printf("%d",dp[N][T]);}//01背包二维逆写写法intp[107],w[107],dp[107][1007];intmain(){intN,T;scanf("%d%d",&N,&T);for(inti=1;i<=N;i++){scanf("%d%d",&p[i],&w[i]);}memset(dp,0,sizeof(dp));for(inti=1;i<=N;i++){for(intj=T;j>=0;j--){if(j>=w[i])dp[i][j] = max(dp[i-1][j],dp[i-1][j-w[i]]+p[i]);elsedp[i][j] = dp[i-1][j];}}printf("%d",dp[N][T]);}//01背包1维写法,只能逆写intp[107],w[107],dp[1007];intmain(){intN,T;scanf("%d%d",&N,&T);for(inti=1;i<=N;i++)scanf("%d%d",&p[i],&w[i]);memset(dp,0,sizeof(dp));for(inti=1;i<=N;i++)for(intj=T;j>=w[i];j--)dp[j] = max(dp[j],dp[j-w[i]]+p[i]);printf("%d",dp[T]);}
标签:tool cal printf port oschina tags one 时间 inpu
原文地址:http://www.cnblogs.com/liwenchi/p/7259366.html