0
点赞
收藏
分享

微信扫一扫

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

耶也夜 2022-01-11 阅读 87

原题传送门

#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 条评论