| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 9042 | Accepted: 4296 |
Description
Input
Output
Sample Input
3 7 40 3 5 23 8 2 52 6
Sample Output
48
Hint
Source
ac代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define INF 1<<30
#define max(a,b) (a>b?a:b)
#define min(a,b) (a>b?a:b)
struct s
{
int h,num,mh;
}b[440];
int dp[40040];
int cmp(const void *a,const void *b)
{
return (*(struct s *)a).mh-(*(struct s *)b).mh;
}
int n;
int main()
{
while(scanf("%d",&n)!=EOF)
{
int i,j,k;
for(i=0;i<n;i++)
{
scanf("%d%d%d",&b[i].h,&b[i].mh,&b[i].num);
}
qsort(b,n,sizeof(b[0]),cmp);
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
for(k=1;k<=b[i].num;k++)
{
for(j=b[i].mh;j>=b[i].h;j--)
{
dp[j]=max(dp[j],dp[j-b[i].h]+b[i].h);
}
}
}
int ans=0;
for(i=0;i<=b[n-1].mh;i++)
{
ans=max(ans,dp[i]);
}
printf("%d\n",ans);
}
}POJ 题目2392 Space Elevator(多重背包)
原文:http://blog.csdn.net/yu_ch_sh/article/details/44891177