Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
147307 冼俊烨 潜水员 C++ 通过 100 3 MS 264 KB 751 2024-05-18 14:36:19

Tests(5/5):


//潜水员 //和其它背包问题不同的是,携带的气体量可以超过所需的量 #include<bits/stdc++.h> using namespace std; int dp[25][85], a[1005], b[1005], w[1005]; int main() { int n, m, num; scanf("%d%d%d", &m, &n, &num); memset(dp, 0x3f, sizeof(dp)); dp[0][0] = 0; for (int i = 0; i < num; i++) { scanf("%d%d%d", &a[i], &b[i], &w[i]); for (int j = m; j >= 0; j--) //氧气需要量 for (int k = n; k >= 0; k--) //氮气需要量 { int t1 = min(m, j + a[i]); //若超过需求,直接等于需求 int t2 = min(n, k + b[i]); dp[t1][t2] = min(dp[t1][t2], dp[j][k] + w[i]); } } printf("%d\n", dp[m][n]); return 0; }


测评信息: