bzoj1606 / P2925 [USACO08DEC]干草出售Hay For Sale(01背包)

P2925 [USACO08DEC]干草出售Hay For Sale

简化版01背包(连价值都免了)

直接逆推解决

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cctype>
 5 #define re register
 6 using namespace std;
 7 void read(int &x){
 8     char c=getchar();x=0;
 9     while(!isdigit(c)) c=getchar();
10     while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=getchar();
11 }
12 int n,m,f[50002],a;
13 int main(){
14     read(n);read(m); f[0]=1;
15     for(re int i=1,j;i<=m;++i){
16         read(a);
17         for(j=n;j>=a;--j) f[j]|=f[j-a];//在这里相当于f[j]=f[j-a]?1:0;
18     }
19     for(re int i=n;i>=0;--i)//找一遍最大的
20         if(f[i]){printf("%d",i);return 0;}
21 }
View Code

 

posted @ 2018-10-26 15:49  kafuuchino  阅读(163)  评论(0编辑  收藏  举报