3 条题解
-
1
#include<bits/stdc++.h> using namespace std; const int N = 1000 + 10; int m , w[N] , c[N] , dp[1010] , n; int main(){ cin >> m >> n; for(int i = 1;i <= n;i++) cin >> w[i] >> c[i]; for(int i = 1;i <= n;i++) for(int j = w[i];j >= m;j++) dp[j] = max(dp[j] , dp[j - w[i]] + c[i]); cout << dp[m]; return 0; }
-
0
#include <iostream> #include <stdio.h> using namespace std; const int N=1e6+10; int m,n; int w[N],c[N],dp[N]; int main(){ cin>>m>>n; for(int i=1;i<=n;i++){ cin>>w[i]>>c[i]; } for(int i=1;i<=n;i++){ for(int j=w[i];j<=m;j++){ dp[j]=max(dp[j],dp[j-w[i]]+c[i]); } } cout<<dp[m]; return 0; }
-
-1
#include <cstdio> #include <algorithm> #include <cstring> #include <iostream> using namespace std; int w[100100],c[100100]; int f[100100]; int n,v; int complete() { for(int i=1;i<=n;i++) for(int j=w[i];j<=v;j++) f[j]=max(f[j],f[j-w[i]]+c[i]); return f[v]; } int main() { cin>>v>>n; for(int i=1;i<=n;i++) cin>>w[i]>>c[i]; cout<<complete()<<endl; return 0; }
- 1
信息
- ID
- 1732
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 302
- 已通过
- 112
- 上传者