2 条题解
-
0
#include #include #include using namespace std;
int n, m; int v[25], p[25]; int f[30005];
int main() { cin >> n >> m; for (int i = 1; i <= m; ++i) { cin >> v[i] >> p[i]; p[i] *= v[i]; }
for (int i = 1; i <= m; ++i) { for (int j = n; j >= v[i]; --j) { f[j] = max(f[j], f[j - v[i]] + p[i]); } } cout << f[n] << endl; return 0;
}
-
0
板子
#include <iostream> #include <stack> #include <cmath> #include <vector> #include <string.h> #include <queue> #include <stdio.h> #include <iomanip> #include <cstdio> #include <algorithm> #define LL long long #define double long double using namespace std; const int N = 1e5 + 10; const int INF = 0x3f3f3f3f; int n, m, v[N], w[N], dp[N]; signed main() { cin >> n >> m; for(int i = 1; i <= m; i++) { cin >> v[i] >> w[i]; } for(int i = 1; i <= m; i++) { for(int j = n; j >= v[i]; j--) { dp[j] = max(dp[j], dp[j - v[i]] + v[i] * w[i]); } } cout << dp[n] << endl; return 0; }
- 1
信息
- ID
- 685
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 104
- 已通过
- 40
- 上传者