丧杰1927 2024-08-20 18:56 采纳率: 25%
浏览 3

2017NOIP 问题 C: 墙壁 需要60-100程序

img

img

img


img

60分的程序帮忙一下,100分也行
如果需要题解可以问我拿(我看不懂)

  • 写回答

1条回答 默认 最新

  • 吃不了席 2024-08-23 19:54
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    解析: 这是一个动态规划问题,需要求解在给定条件下的最小代价。我们可以使用三维数组dp[i][j][c]来表示当前绚丽值为i,j号砖块颜色为c的最小代价。在状态转移时,我们需要枚举位置j-1的颜色t,然后更新dp[i][j][c]的值。

    代码如下:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int N = 405, M = 405, K = 405;
    const int INF = 1e9 + 7;
    
    int n, m, k;
    int p[N][M];
    int C[N];
    int dp[N][N][M];
    
    int main() {
        freopen("wall.in", "r", stdin);
        freopen("wall.out", "w", stdout);
        scanf("%d%d%d", &n, &m, &k);
        for (int i = 1; i <= n; i++) scanf("%d", &C[i]);
        for (int i = 1; i <= n; i++)
            for (int j = 1; j <= m; j++)
                scanf("%d", &p[i][j]);
    
        memset(dp, 0x3f, sizeof(dp));
        for (int i = 1; i <= m; i++) dp[0][0][i] = 0;
    
        for (int w = 1; w <= k; w++) {
            for (int j = 1; j <= n; j++) {
                int c = C[j];
                if (c == 0) {
                    for (int t = 1; t <= m; t++) {
                        for (int pre_w = max(0, w - 1); pre_w <= min(k, w + 1); pre_w++) {
                            dp[w][j][t] = min(dp[w][j][t], dp[pre_w][j - 1][t] + p[j][t]);
                        }
                    }
                } else {
                    dp[w][j][c] = min(dp[w][j][c], dp[w][j - 1][c]);
                }
            }
        }
    
        int ans = INF;
        for (int i = 1; i <= m; i++) ans = min(ans, dp[k][n][i]);
        if (ans >= INF) ans = -1;
        printf("%d
    ", ans);
        return 0;
    }
    

    注意:这段代码需要在Windows系统下运行,如果需要输出long long类型,请使用%I64d。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月20日

悬赏问题

  • ¥15 滑块验证码拖动问题悬赏
  • ¥15 Wanted but not invoked:Actually, there were zero interactions with this moc
  • ¥20 怎么驱动tb6612
  • ¥15 Arcgis 3D效果点要素
  • ¥15 在执行yolo训练脚本的时候,没有报错,在扫描val这一步后就推出执行了
  • ¥15 delphi开发的WEBSERVER改用HTTPS协议
  • ¥15 pic16f877A单片机的计数器proteus仿真失效
  • ¥100 调查 Vitis AI 中验证 .xmodel 量化后的正确性
  • ¥30 codelite全屏时file、setting那一行消失了
  • ¥15 gazebo-rviz教程