bzoj1606[Usaco2008 Dec]Hay For Sale 购买干草*

bzoj1606[Usaco2008 Dec]Hay For Sale 购买干草

题意:

容器体积为c,n个物体,每个有一个体积,求不超过容器能放入的最大体积。n≤5000,c≤50000

题解:

裸01背包。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define inc(i,j,k) for(int i=j;i<=k;i++)
 5 #define dec(i,j,k) for(int i=j;i>=k;i--)
 6 #define maxn 50100
 7 using namespace std;
 8 
 9 inline int read(){
10     char ch=getchar(); int f=1,x=0;
11     while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
12     while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
13     return f*x;
14 }
15 int n,c,f[maxn];
16 int main(){
17     c=read(); n=read();
18     inc(i,1,n){
19         int a=read(); dec(j,c,a)f[j]=max(f[j],f[j-a]+a);
20     }
21     printf("%d",f[c]); return 0;
22 }

 

20160727

posted @ 2016-07-27 22:58  YuanZiming  阅读(119)  评论(0编辑  收藏  举报