効果の件名:
MXYは、自分自身を救い出すことができないスパイシーなチキンゲームにふけます。
文字の強度を高めるために、MXYは、機器のセットを購入することを決めました。今、機器のn個を有することが知られ、各機器にはなります
特定の物理的抵抗と魔法抵抗のためにᨀ、および特定の価格が必要です。MXYは抗Bとの少なくとも問題があることを確認したい
魔法抵抗、あなたは条件を満たすために必要な最小量を計算します。(機器の購入を繰り返していません)
問題解決のアイデア:
F [I、J]場合、抗J量マジック数に対する最小値はIで表します。
对当前(AI、BI、MI)はfが{[I、J] + MI F} =分[iがAI、J +双方向+]。
私はAIがAよりも大きい+場合は、F [A]、Jの共感を行くFまでの更新[私は愛を+]。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1005;
int a, b, n;
int w[N], m[N], v[N], f[105][105];
int main() {
scanf("%d %d\n%d", &a, &b, &n);
for (int i = 1; i <= n; ++i)
scanf("%d %d %d", &w[i], &m[i], &v[i]);
memset(f, 127 / 3, sizeof f);
f[0][0] = 0;
for (int i = 1; i <= n; ++i)
for (int j = a; j >= 0; --j)
for (int k = b; k >= 0; --k) {
int x = j + w[i];
int y = k + m[i];
x = min(x, a); y = min(y, b);
f[x][y] = min(f[x][y], f[j][k] + v[i]);
}
printf("%d", f[a][b]);
}