AcWing 1020 潜水员 题解 (动态规划—DP—背包问题)

耶也夜

关注

阅读 87

2022-01-11

原题传送门

#include<bits/stdc++.h>

using namespace std;

const int N = 22, M = 80;

int n, m, k;
int f[N][M];

int main()
{
	cin >> n >> m>>k;
	memset(f, 0x3f3f3f, sizeof(f));
	f[0][0] = 0;
	
	for(int i = 0; i < k; i ++ ){
		int a, b, c;
		cin>>a>>b>>c;
		for(int j = n; j >= 0; j -- ){
			for(int k = m; k >= 0; k -- ){
				f[j][k] = min(f[j][k], f[max(0, j - a)][max(0, k - b)] + c);
			}
		}
	}
	
	cout<<f[n][m]<<endl;
	return 0;
}

精彩评论(0)

0 0 举报