信息
- ID
- 685
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 85
- 已通过
- 32
- 上传者
#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;
}
板子
#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;
}