采药
http://ybt.ssoier.cn:8088/problem_show.php?pid=1932
采药dp
#include<bits/stdc++.h> using namespace std; int t,m,w[105],v[105],f[105][1005]; int main() { cin>>t>>m; for(int i=1; i<=m; i++) cin>>w[i]>>v[i]; for(int i=1; i<=m; i++) { for(int j=t; j>=0; j--) { if(j>=w[i]) f[i][j]=max(f[i-1][j-w[i]]+v[i],f[i-1][j]); else f[i][j]=f[i-1][j]; } } cout<<f[m][t]; }
采药4
// http://www.jzoj.cn/problem.php?id=1746 // 30% # include <bits/stdc++.h> using namespace std; int n,a[101]; int W,w[101],v[101],maxv; int tw,tv; int rest(int dep){ int s=0; for(int i=dep;i<=n;i++) s+=v[i]; return s; } void dfs(int dep){ if(dep>n) //方案处理,计算这个方案的总重量和总价值 { if(tv>maxv) maxv=tv; } else{ for(int i=0;i<=1;i++){ a[dep]=1-i; if(tw+a[dep]*w[dep]<=W && tv+a[dep]*v[dep]+rest(dep+1)>maxv ){ tw+=a[dep]*w[dep]; tv+=a[dep]*v[dep]; dfs(dep+1); tw-=a[dep]*w[dep]; tv-=a[dep]*v[dep]; } } } } int main(){ cin>>W>>n; for(int i=1;i<=n;i++) cin>>w[i]>>v[i]; dfs(1); cout<<maxv<<endl; return 0 ; }
采药3
// http://www.jzoj.cn/problem.php?id=1746 // 25% # include <bits/stdc++.h> using namespace std; int n,a[101]; int W,w[101],v[101],maxv; int tw,tv; void dfs(int dep){ if(dep>n) //方案处理,计算这个方案的总重量和总价值 { if(tv>maxv) maxv=tv; } else{ for(int i=0;i<=1;i++){ a[dep]=1-i; if(tw+a[dep]*w[dep]<=W){ tw+=a[dep]*w[dep]; tv+=a[dep]*v[dep]; dfs(dep+1); tw-=a[dep]*w[dep]; tv-=a[dep]*v[dep]; } } } } int main(){ cin>>W>>n; for(int i=1;i<=n;i++) cin>>w[i]>>v[i]; dfs(1); cout<<maxv<<endl; return 0 ; }
采药2
// http://www.jzoj.cn/problem.php?id=1746 // 20% # include <bits/stdc++.h> using namespace std; int n,a[101]; int W,w[101],v[101],maxv; void dfs(int dep){ if(dep>n) //方案处理,计算这个方案的总重量和总价值 { int tw=0,tv=0; for (int i=1;i<=n;i++) { tw+=a[i]*w[i]; tv+=a[i]*v[i]; } if(tw<=W && tv>maxv) { maxv=tv; } } else{ for(int i=0;i<=1;i++){ a[dep]=1-i; dfs(dep+1); } } } int main(){ cin>>W>>n; for(int i=1; i<=n; i++) cin>>w[i]>>v[i]; dfs(1); cout<<maxv<<endl; return 0 ; }
采药1
# include <bits/stdc++.h> using namespace std; int n,a[101]; void dfs(int dep){ if(dep>n){ for (int i=1;i<=n;i++) cout<<a[i]; cout<<endl; } else{ for(int i=0;i<=1;i++){ a[dep]=1-i; dfs(dep+1); } } } int main(){ cin>>n; dfs(1); return 0 ; }
采药0
# include <bits/stdc++.h> using namespace std; int n,a[101]; void dfs(int dep){ if(dep>n){ for (int i=1;i<=n;i++) cout<<a[i]; cout<<endl; } else{ a[dep]=1; dfs(dep+1); a[dep]=0; dfs(dep+1); } } int main(){ cin>>n; dfs(1); return 0 ; return 0; }

浙公网安备 33010602011771号