1 solutions
-
0
部分分
#include<bits/stdc++.h> using namespace std; const int N=25; int v[N],w[N]; int main() { int n,V; cin>>n>>V; for(int i=0;i<n;i++) { cin>>v[i]>>w[i]; } int res=1000000000; for(int i=1;i<1<<n;i++) { bitset<32> a(i); int sumv=0,sumw=0; for(int j=0;j<n;j++) { if(a[j]==1) { sumv+=v[j]; sumw+=w[j]; } } if(sumw>=V) { res=min(res,sumv); } } if(res==1000000000) { cout<<"no solution"; } else { cout<<res; } return 0; }满分
#include<bits/stdc++.h> using namespace std; const int N=510,M=1e6+10; int v[N],w[N]; int f[M]; //f[i]=j,表示占用体积至少为i的时候最小花费为j int main() { int n,V; cin>>n>>V; for(int i=1;i<=n;i++) { cin>>w[i]>>v[i]; } memset(f,0x3f,sizeof f); f[0]=0;//初始化 for(int i=1;i<=n;i++) { for(int j=V;j>=0;j--) //枚举前i个物品的不同的体积 { f[j]=min(f[j],f[max(j-v[i],0)]+w[i]); } } if(f[V]==0x3f3f3f3f) //得不到 { cout<<"no solution"<<endl; } else { cout<<f[V]; } return 0; }
- 1
Information
- ID
- 2528
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 20
- Accepted
- 4
- Uploaded By