标签:
Time Limit: 3000MS | Memory Limit: 30000K | |
Total Submissions: 34814 | Accepted: 11828 |
Description
Input
Output
Sample Input
3 10 1 2 4 2 1 1 2 5 1 4 2 1 0 0
Sample Output
8 4
Source
#include<iostream> #include <cstdio> #include <cstring> using namespace std; const int N=105,V=1e5+5; int n,m,f[V],c[N],v[N],ans=0; void mpAble(){ memset(f,-1,sizeof(f)); f[0]=0; for(int i=1;i<=n;i++){ for(int j=0;j<=m;j++){ if(f[j]>=0) f[j]=c[i]; else f[j]=-1; } for(int j=0;j<=m-v[i];j++) if(f[j]>=0) f[j+v[i]]=max(f[j+v[i]],f[j]-1); } } int main(int argc, const char * argv[]) { while(cin>>n>>m){ if(n==0&&m==0) break; for(int i=1;i<=n;i++) scanf("%d",&v[i]); for(int i=1;i<=n;i++) scanf("%d",&c[i]); mpAble(); for(int i=m;i>=1;i--)if(f[i]>=0) ans++; cout<<ans<<"\n";ans=0; } return 0; }
标签:
原文地址:http://www.cnblogs.com/candy99/p/5797497.html