https://www.bilibili.com/video/BV1GJ411x7h7/

放心吧,下面没有代码

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

/

#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int main() {
    int m, n;
    cin >> m >> n;
    int k;
    cin >> k;
    vector<vector<int>> cylinders(k, vector<int>(3));
    for (int i = 0; i < k; ++i) {
        cin >> cylinders[i][0] >> cylinders[i][1] >> cylinders[i][2];
    }
    vector<vector<int>> dp(m + 1, vector<int>(n + 1, INT_MAX));
    dp[0][0] = 0;

    for (const auto &cyl : cylinders) {
        int a = cyl[0], b = cyl[1], c = cyl[2];
        for (int i = m; i >= 0; --i) {
            for (int j = n; j >= 0; --j) {
                if (dp[i][j] != INT_MAX) {
                    int new_i = min(i + a, m);
                    int new_j = min(j + b, n);
                    if (dp[new_i][new_j] > dp[i][j] + c) {
                        dp[new_i][new_j] = dp[i][j] + c;
                    }
                }
            }
        }
    }

    cout << dp[m][n] << endl;
    return 0;
}

1 条评论

  • 1

信息

ID
1858
时间
1000ms
内存
256MiB
难度
6
标签
递交数
20
已通过
10
上传者