3 条题解
-
1
using namespace std; int f[10005],a[1005],b[1005]; int main() { int t; cin>>t; while(t--) { memset(f,0,sizeof(f)); int n,m; cin>>m>>n; for(int i=1;i<=m;i++) { cin>>a[i]; } for(int i=1;i<=m;i++) { cin>>b[i]; } for(int i=1;i<=m;i++) { for(int j=n;j>=b[i];j--) { f[j]=max(f[j],f[j-b[i]]+a[i]); } } cout<<f[n]<<"\n"; } return 0; }
-
-1
#include<bits/stdc++.h> using namespace std; int m[205],l[205],n,v,t,ans,a[205][10005]; int main() { cin>>t; for(int k=1;k<=t;k++) { cin>>n>>v; for(int i=1;i<=n;i++) cin>>m[i]; for(int i=1;i<=n;i++) cin>>l[i]; memset(a,0,sizeof(a)); for(int i=1;i<=n;i++) { for(int j=0;j<=v;j++) { if(j-l[i]>=0) a[i][j]=max(m[i]+a[i-1][j-l[i]],a[i-1][j]); else a[i][j]=a[i-1][j]; } } cout<<a[n][v]<<endl; } return 0; }
-
-3
#include<。。。。。。> #define int long long using namespace std; int t,v,n; int f[-201][10011]; int a[10001]; int b[10001]; main(){ cin>>t; while(t--){ memset(f,0,sizeof(f)); cin>>n>>v; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) cin>>b[i]; for(int i=1;i<=n;i++){ for(int j=0;j<=v;j++){ f[i][j]=f[i-1][j]; if(j>=b[i]){ f[i][j]=max(f[i][j],f[i-1][j-b[i]]+a[i]); } } } cout<<f[n][v]<<endl; } return 0; }
- 1
信息
- ID
- 494
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 132
- 已通过
- 40
- 上传者