LC-1751. 最多可以参加的会议数目 II(动态规划)

news2025/4/3 15:40:19

1751. 最多可以参加的会议数目 II

难度困难69

给你一个 events 数组,其中 events[i] = [startDayi, endDayi, valuei] ,表示第 i 个会议在 startDayi 天开始,第 endDayi 天结束,如果你参加这个会议,你能得到价值 valuei 。同时给你一个整数 k 表示你能参加的最多会议数目。

你同一时间只能参加一个会议。如果你选择参加某个会议,那么你必须 完整 地参加完这个会议。会议结束日期是包含在会议内的,也就是说你不能同时参加一个开始日期与另一个结束日期相同的两个会议。

请你返回能得到的会议价值 最大和

示例 1:

img

输入:events = [[1,2,4],[3,4,3],[2,3,1]], k = 2
输出:7
解释:选择绿色的活动会议 0 和 1,得到总价值和为 4 + 3 = 7 。

示例 2:

img

输入:events = [[1,2,4],[3,4,3],[2,3,10]], k = 2
输出:10
解释:参加会议 2 ,得到价值和为 10 。
你没法再参加别的会议了,因为跟会议 2 有重叠。你 不 需要参加满 k 个会议。

示例 3:

img

输入:events = [[1,1,1],[2,2,2],[3,3,3],[4,4,4]], k = 3
输出:9
解释:尽管会议互不重叠,你只能参加 3 个会议,所以选择价值最大的 3 个会议。

提示:

  • 1 <= k <= events.length
  • 1 <= k * events.length <= 106
  • 1 <= startDayi <= endDayi <= 109
  • 1 <= valuei <= 106

动态规划

题解:https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended-ii/solution/po-su-dp-er-fen-dp-jie-fa-by-ac_oier-88du/

定义 f [ i ] [ j ] f[i][j] f[i][j] 为考虑前 i i i 个事件,选择不超过 j j j 的最大价值

对于每个事件,都有选择与不选两种选择:

  • 不选: f [ i ] [ j ] = f [ i − 1 ] [ j ] f[i][j] = f[i - 1][j] f[i][j]=f[i1][j]

  • 选:找到第 i i i 件事件之前,与第 i i i 件事件不冲突的事件,记为 last,则有 f [ i ] [ j ] = f [ l a s t ] [ j − 1 ] + v a l u e i f[i][j] = f[last][j - 1] + value_i f[i][j]=f[last][j1]+valuei

两者取 m a x max max,则是 f [ i ] [ j ] f[i][j] f[i][j] 的值。

class Solution {
    public int maxValue(int[][] es, int k) {
        int n = es.length;
        Arrays.sort(es, (a, b)->a[1]-b[1]);
        // f[i][j] 代表考虑前 i 个事件,选择不超过 j 的最大价值
        int[][] f = new int[n + 1][k + 1];
        for (int i = 1; i <= n; i++) {
            int[] ev = es[i - 1];
            int s = ev[0], e = ev[1], v = ev[2];
            
            // 找到第 i 件事件之前,与第 i 件事件不冲突的事件
            // 对于当前事件而言,冲突与否,与 j 无关
            int last = 0;
            for (int p = i - 1; p >= 1; p--) {
                int[] prev = es[p - 1];
                if (prev[1] < s) {
                    last = p;
                    break;
                }
            }
            
            for (int j = 1; j <= k; j++) {
                f[i][j] = Math.max(f[i - 1][j], f[last][j - 1] + v);    
            }
        }
        return f[n][k];
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/93418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用 Pandas 处理结构不佳的 Excel 文件

简介 用pandas很容易读取Excel文件并将数据转换为DataFrame。然而现实世界中的Excel文件往往构造不佳&#xff0c;在那些数据散落在工作表中的情况下&#xff0c;你可能需要定制读取数据的方式。本文将讨论如何使用pandas和openpyxl来读取这些类型的Excel文件&#xff0c;并干…

手机视频怎么裁剪时长?教你三招快速搞定

大家知道手机视频怎么裁剪时长吗&#xff1f;现如今&#xff0c;新媒体行业发达&#xff0c;因为很多地方都需要用到视频文件&#xff0c;所以对视频处理的相关操作是免不了的。那么当你因为视频时长过长&#xff0c;导致视频无法发布的时候&#xff0c;你是怎么做的呢&#xf…

第六章JDBC基础详解

文章目录什么是JDBC数据库编程的必要条件JDBC工作原理JDBC如何建立数据库连接JBDC的基本操作添加操作修改操作删除操作查询操作JDBC使用的步骤JDBC的批处理操作JDBC数据源连接池关于执行sql语句的对象什么是JDBC 数据库编程的必要条件 编程语言&#xff0c;如Java&#xff0c…

靶向药物丨艾美捷西妥昔单抗Cetuximab方案

西妥昔单抗Cetuximab基本信息&#xff1a; 中文名 西妥昔单抗 英文名 Cetuximab 别名 西妥昔单抗 EGFR抑制剂 西妥昔单抗对照品 6-二氨基庚二酸 英文别名 IMC 225 Hsdb 7454 CETUXIMAB EGFR antibody CetuxiMab(C225) Cetuximab - Buffer solution CAS 205923-56-…

【图像增强】暗通道图像去雾【含GUI Matlab源码 740期】

⛄一、简介 1 暗通道先验图像去雾方法 1.1 光线透射率模型 光在传播中由于散射使得从光源发出的辐射只有部分能到达接收传感器&#xff0c;其他则被散射到传播介质中。假设距离较小时散射光强与距离是线性关系&#xff0c;当光源距离传感器无限接近时&#xff0c;光的衰减值可…

定期执行命令、脚本之Linux

在linux下&#xff0c;如果想要在未来的某个时刻执行某个任务&#xff0c;并且在未来的每一个这样的时刻里都要执行这个任务&#xff0c;举个简单的例子&#xff0c;比如说想要在将来&#xff0c;每天的十二点都重启路由器&#xff0c;大多数发行版都自带一个守护进程&#xff…

【敏捷转型,效能提升】万字长文敏捷转型实践系列分享

作者&#xff1a;王先科、田野、王锁、刘双、马越、刘思琪 摘要&#xff1a;本文总结了近4年以来部门实施敏捷转型的实践及经验教训&#xff0c;从5个方面进行了阐述&#xff1a; 1. 文化建设下好先手棋 2. 持续敏捷实践祭出连环招 3. 沉淀实践指引把牢定盘星 4. 效能度量…

英飞凌-AURIX-TC3XX-内核架构:AURIX TriCore 1.6P

目录英飞凌-AURIX-TC3XX-内核架构&#xff1a;AURIX TriCore 1.6P1、AURIX TC1.6P内核简介及特点2、AURIX TC1.6P系统组成及框架2.1、AURIX TC1.6P CPU 具体实现图如下&#xff1a;2.2、AURIX TC1.6P CPU 系统框架2.2.1、指令获取单元- Instruction Fetch Unit2.2.2、执行单元-…

SpringSession+Redis实现【分布式Session】

1. 什么是Spring Session SpringBoot整合Spring-Session的自动配置可谓是开箱即用&#xff0c;极其简洁和方便。这篇文章即介绍SpringBoot整合Spring-Session&#xff0c;这里只介绍基于RedisSession的实战。 Spring Session 是Spring家族中的一个子项目&#xff0c;Spring S…

公务员考试要求及流程梳理

背景 虽然我不考, 但考公这么热门, 在信息层面不能落伍. 本文以 浙江2023省考 (考试时间在2022年12月) 为例, 主要梳理 怎么报名, 选职位, 考试科目与题型, 录用流程等. 为什么考公/考编这么热 因为当下的社会环境对员工太不友好了: 工作强度大, 精神压力大, 还有硬性比例淘…

频率调优(调频)

文章目录 前言 1 频率调优步骤 1.1 准备工作 1.2 串行模式微调 1.3 PPM模式微调 2 高级用户 前言 某些协议需要调优以获得最佳性能。在某些情况下&#xff0c;需要调优才能绑定协议。频率调优是每个 MULTI 模块所特有的&#xff0c;是由于射频组件的微小变化引起的。 &#xf…

物联网通信技术 第6章 电信网络

6.5 多网融合 从通信网络来讲&#xff0c;多网融合主要是指固定网络、移动网络、互联网、广电网融合于一体&#xff0c;满足通信业务融合、网络融合、终端融合、产业融合的需求。 “多网融合”技术有两个层面的含义&#xff0c;一是基于IP协议的控制网与信息网的“接入融合”…

电巢:千亿美金砸向半导体,印度能否实现“赶中超美”的野心?

前言 印度&#xff0c;又一次开始向半导体产业进军。 近日&#xff0c;印度最大集团公司塔塔集团&#xff08;Tata Group&#xff09;旗下子公司塔塔之子董事长纳塔拉詹钱德拉塞卡兰(Natarajan Chandrasekaran)&#xff0c;在接受媒体采访时表示&#xff0c;塔塔集团将开始在印…

戴尔电脑录屏怎么录?这3个方法,教你轻松录屏

随着互联网的发展&#xff0c;电脑已经成为我们学习、工作和娱乐中不可或缺的工具。很多人在使用戴尔电脑的时候&#xff0c;经常会遇到需要进行录屏的情况。戴尔电脑录屏怎么录&#xff1f;小伙伴还在担心自己不会使用戴尔电脑录屏而烦恼吗&#xff1f;今天小编给大家带来了3个…

DVWA靶场安装

DVWA靶场安装1.环境准备2.安装步骤2.1.phpstudy安装2.2.DVWA安装2.2.1.下载DVWA2.2.2.解压DVWA2.2.3.放入服务器2.2.4.删除配置文件后缀2.2.5.修改配置文件2.2.6.访问DVWA2.2.7.报错修改2.2.8.修改php.ini2.2.9.重新访问DVWA2.2.10.登录DVWA3.修改过关等级1.环境准备 服务器环境…

redux与vuex异同以及使用

一. 概述 React与Vue是我们熟悉的两大前端主流框架&#xff0c;来自官方的解释,Vue是一套用于构建用户界面的渐进式框架,React是一个用于构建用户界面的JavaScript库,两个框架都使用各自的语法&#xff0c;专注于用户UI界面的构建.那我们会有疑问&#xff0c;这两个框架都专注于…

PAG动画研究

阅读文章大约需要6分钟 一、什么是PAG 官方定义&#xff1a;PAG&#xff08;Portable Animated Graphics&#xff09; 是一套完整的动画工作流。提供从AE导出插件&#xff0c;到桌面预览工具PAGViewer&#xff0c;再到各端的跨平台渲染 SDK。 二、PAG的优势 1、动画文件小&a…

[附源码]Python计算机毕业设计工程车辆动力电池管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

【DevOps实战系列】第四章:详解Jenkins搭建及使用

个人亲自录制全套DevOps系列实战教程 &#xff1a;手把手教你玩转DevOps全栈技术 Jenkins概述 根据jenkins官网对自己的描述&#xff0c;它是一个可集成有1800插件的自动化服务&#xff0c; 提供构建、部署和自动化的工程&#xff0c;可以说是opsdev的大总管&#xff0c;将开发…

zabbix部署+报警模块+图形模块+管理模块+添加监控模板

目录 安装zabbix 部署zabbix 配置zabbix 1. 修改语言 2. 监控linux端 3. 修改中文乱码 报警功能 报警音报警 邮件报警 脚本报警 邮件通知内容 图形模块 创建图形 创建聚合图形 percona mysql模板 nginx模板 克隆主机 网络发现 自动注册 主被动模式 &#x1f341;如果对你有帮助…