璟雯院

珺璟如晔,雯华若锦

用户工具

站点工具


icpc:problems:luogup3399
problems
名称丝绸之路
题目编号P3399
题目链接luogu.com.cn/…
来源Luogu
算法分类动态规划, 线性动态规划
难易程度容易

丝绸之路

想法

设立f[i][j]表示在第j天到第i个地方的最小疲劳。每次转移只需要转移前j天中最小的疲劳即可。

代码实现

#include <cstdio>
#include <cstring>
const int N = 1010;
int d[N], c[N], f[N][N];
int main() {
    memset(f, 0x7f, sizeof(f));
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++)
        scanf("%d", &d[i]);
    for (int i = 1; i <= m; i++)
        scanf("%d", &c[i]);
    for (int i = 0; i <= m; i++)
        f[0][i] = 0;
    for (int i = 1; i <= n; i++) {
        int mi = f[i - 1][i - 1];
        for (int j = i; j <= m; j++) {
            if (f[i - 1][j - 1] < mi)
                mi = f[i - 1][j - 1];
            f[i][j] = mi + c[j] * d[i];
        }
    }
    int ans = f[n][n];
    for (int i = n + 1; i <= m; i++)
        if (f[n][i] < ans)
            ans = f[n][i];
    printf("%d", ans);
    return 0;
}
/app/www/public/data/pages/icpc/problems/luogup3399.txt · 最后更改: 2024/03/23 16:04 由 温婕莺