给墙壁刷油漆

Posted 929code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给墙壁刷油漆相关的知识,希望对你有一定的参考价值。

给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time ,分别表示给 n 堵不同的墙刷油漆需要的开销和时间。你有两名油漆匠:

一位需要 付费 的油漆匠,刷第 i 堵墙需要花费 time[i] 单位的时间,开销为 cost[i] 单位的钱。
一位 免费 的油漆匠,刷 任意 一堵墙的时间为 1 单位,开销为 0 。但是必须在付费油漆匠 工作 时,免费油漆匠才会工作。
请你返回刷完 n 堵墙最少开销为多少

1. 动态规划

class Solution 
public:
    int paintWalls(vector<int>& cost, vector<int>& time) 
        int n = cost.size();
        vector<int> dp(n+1,INT_MAX/2);
        dp[0] = 0;
        for(int i=0;i<n;i++)//枚举硬币
            for(int j=n;j;j--)  //由后往前,每个硬币只枚举一次
                dp[j] = min(dp[j],dp[max(j-time[i]-1,0)] + cost[i]);
            
        
        return dp[n];
    
;

以上是关于给墙壁刷油漆的主要内容,如果未能解决你的问题,请参考以下文章

CF-234 F. Fence DP

格子刷油漆

hiho_1055_刷油漆

算法笔记_185:历届试题 格子刷油漆(Java)

HihoCoder 1055 : 刷油漆 树形DP第一题

JN 刷墙 过程DP