首页 > 其他分享 >背包DP-6447. 给墙壁刷油漆

背包DP-6447. 给墙壁刷油漆

时间:2023-06-18 22:11:21浏览次数:38  
标签:开销 油漆匠 6447 dfs 刷油漆 cost time 下标 DP

6447. 给墙壁刷油漆

Description

Difficulty: 困难

Related Topics:

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

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

请你返回刷完 n 堵墙最少开销为多少。

示例 1:

输入:cost = [1,2,3,2], time = [1,2,3,2]
输出:3
解释:下标为 0 和 1 的墙由付费油漆匠来刷,需要 3 单位时间。同时,免费油漆匠刷下标为 2 和 3 的墙,需要 2 单位时间,开销为 0 。总开销为 1 + 2 = 3 。

示例 2:

输入:cost = [2,3,4,2], time = [1,1,1,1]
输出:4
解释:下标为 0 和 3 的墙由付费油漆匠来刷,需要 2 单位时间。同时,免费油漆匠刷下标为 1 和 2 的墙,需要 2 单位时间,开销为 0 。总开销为 2 + 2 = 4 。

提示:

  • 1 <= cost.length <= 500
  • cost.length == time.length
  • 1 <= cost[i] <= 106
  • 1 <= time[i] <= 500

Solution

主要考验状态定义和边界条件的处理。
Language: Python3

class Solution:
    def paintWalls(self, cost: List[int], time: List[int]) -> int:
        n = len(cost)

        @cache
        def dfs(i, j):
            """
            dfs(i, j): 要刷完0~i面墙,当前剩余时间为j,最少开销是多少
            """
            if j >= i + 1: return 0
            if i < 0: return float("inf")
            return min(dfs(i - 1, j + time[i]) + cost[i], dfs(i - 1, j - 1))

        return dfs(n - 1, 0)

标签:开销,油漆匠,6447,dfs,刷油漆,cost,time,下标,DP
From: https://www.cnblogs.com/hyserendipity/p/17489880.html

相关文章

  • wordpress插件:WP-UTF8-Excerpt使列表页只显示摘要(wordpress 6.2)
    一,安装WP-UTF8-Excerpt插件这个插件有点老,大家有更新及时的插件欢迎留言交流安装完成后,点击启用按钮二,查看效果说明:刘宏缔的架构森林—专注it技术的博客,网站:https://blog.imgtouch.com原文: https://blog.imgtouch.com/index.php/2023/06/18/wordpress-cha-jian-wputf......
  • 同类型,类背包动态规划,选地dp
    弱化版:黑虎阿福: 题目描述 阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有NNN家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。作为一向谨慎......
  • 数位DP?记忆化罢了!
    我看了半天的数位DP,DP没学会,人倒是麻了。解决什么一般用于求解给你一个区间\([l,r]\),问你其中满足条件的数有多少个。这种题目还是蛮常见的,我们一般情况下暴力只能拿一少部分分,之前我看着那个\(n\le10^{18}\)是一脸懵逼,这东西\(O(n)\)都过不去,啥高级的东西能A啊。然......
  • 斜率优化dp 学习笔记
    斜率优化dp引入首先,我们考虑一种更简单的dp优化——单调队列优化。比如,一个dp式形如:\[dp_{i}=\min_{k\leqj\leqi}(dp_j+f_j+g_i)\]我们发现,这个式子可以通过拆分(wgj:分离变量),变形成如下式子:\[dp_{i}=\min_{k\leqj\leqi}(dp_j+f_j)+g_i\]怎么样?我们发现,取最小......
  • Wordpress:Briefly unavailable for scheduled maintenance. Check back in a minute.
    场景描述:在更新Wordpress版本从Version6.2.1升级到Version6.2.2时候,顺带点升级的插件太多了,突然就崩溃报错:Brieflyunavailableforscheduledmaintenance.Checkbackinaminute。 因为用的是Siteground建站,以为过会就好了,等了五分钟还是这样,所以进Siteground后台,文件管......
  • 如何在WORDPRESS中添加CNZZ等统计代码
    1,   首先进入我们的WordPress网站后台,即在浏览器上输入网站域名/wp-login,如我的网站是输入forlong401.com/wp-login,然后输入用户名及密码,进入后台,点击左侧的“外观->主题”,查看一下我们使用的是什么主题,像我的进入后台后,会发现有三个主题可供选择,一个TwentyThirteen、Twenty......
  • 教你如何完美更改wordpress站域名
    最近因为要把博客网站从nas上搬运到阿里云服务器,又重温了一遍如何完美搬迁wordpress整站。其实搬运wordpress博客无非就是以下两种情况:1.更换服务器,不换域名2.更换域名下面我分别介绍一下如何完美搬迁wordpress博客1.更换服务器,不换域名这种情况下相对比较简单,三步即可备......
  • 客服端与服务端在TCP/UDP的执行顺序的感受与想法
    网络层与传输层是从上到下还是从下到上网络通信的核心是socket套接字的创建,创建离不开一个关键的点,IP和端口。网络层:提供了端对端的传输,可以理解为通过IP寻址机器。传输层:决定机器的哪一个进程去处理,通过端口寻址。逻辑思维都是,我们通讯一个设备,首先要知道它的IP地址,然后确定......
  • Doosan Excavator Inspection Diagnostic Tool DDT SCR DPF G2 Scan DCU ECU DMS-5 Ha
    DoosanExcavatorInspectionDiagnosticToolDDTSCRDPFG2ScanDCUECUDMS-5Hardware+Software2022.09Softwaredownloadlink:https://mega.nz/file/Bk8X1QxA#g49TrmFsIljfHQpAIkQlG-VIWSgug8kLq3VffqAW00YHardware+SoftwareVersionDoosanDDTSCRDoosan......
  • Longest Path (牛客多校) (换根DP+斜率优化)
    换根dp:第一次dfs处理儿子点的权值第二次dfs处理父亲点,和兄弟节点的权值处理兄弟节点的时候,利用父亲节点统一处理,利用stl存储斜率优化:为什么会用到斜率优化:在遇到转移式子是fixfj的时候,不是分开的,(分开的,直接用单调队列处理)(通常会遇到平方式子)把......