P1973 [NOI2011] NOI 嘉年华

news/2024/12/15 20:46:37/文章来源:https://www.cnblogs.com/YzaCsp/p/18608689

前言

好困难啊, 最近的新目标是吧效率拉起来

思路

转化题意

一问

对于 \(n\) 条线段, 我们对于每条线段, 都要分到两个场地中的一个或者放弃, 求如何分配使得两个场地不存在 \(i\) 满足 \(i \in S_1\)\(i \in S_2\) (其中 \(S_1, S_2\) 分别表示两个场地线段的集合) , 并且使得较少的场地的线段数最多

二问

求当钦定 \(i\) 线段必选时, 并且使得较少的场地的线段数最多


先考虑一问

这个题我们发现, 如果你考虑单条线段, 不太好做, 原因是题目中的限制条件和线段没什么关系, 所以我们考虑按照点来 \(\rm{dp}\)

\(f_{i, j}\) 表示对于前 \(i\) 个时间点, 给 \(1\) 号场地 \(j\) 条线段, 此时另外一边选择线段的最大值

我们讨论一段区间内, 几条线段全部给 \(1\) 号或者 \(2\) 号场地时的最优收益

\[f_{i, j} = \max_{k = 1}^{i - 1} \{ f_{k, j - tot_{k, i}}, f_{k, j} + tot_{k, i} \} \]

其中 \(tot\) 为预处理出的 \(l \sim r\) 区间中, 有多少条被完全覆盖的线段

这样我们可以 \(\mathcal{O} (n^3)\) 且比较自然的完成一问

答案即为 \(\displaystyle\max_{i = 1}^{n} \{f_{m, i}, i\}\)


考虑二问

容易发现的是, 当我们钦定 \(i\) 条线段必须选时, 其前后两段的性质与第一问无异

我们考虑处理前后缀, 把第一问的 \(f\) 数组作为 \(pre\) , 然后新做一个 \(suf\) 数组来枚举后缀

我们令 \(f_{l, r}\) 表示钦定 \(l \sim r\) 必选, 此时的最优解, 相似的, 枚举前后选择的数量, 有

\[f_{l, r} = \max_{x = 1}^{m}\max_{y = 1}^{m} \{ \min(x + y + tot_{l, r}, pre_{l, x} + suf_{r, y}) \} \]

考虑答案, 我们不能简单地用钦定的线段的 \(l, r\) 来处理, 因为有可能会出现线段与钦定线段重叠, 那么我们还需要想办法把他也选上

答案即为 \(\displaystyle\max_{l = 1}^{s_i}\max_{r = s_i + t_i}^{m} f_{l, r}\)

但是这样的复杂度为 \(\mathcal{O} (n^4)\) , 不够优秀

注意到当 \(x\) 一定, 那么当 \(y\) 增大时, \(suf_{r, y}\) 一定单调不增, 利用这个单调性, 我们把 \(y\) 当做一个指针, 即可优化掉一维

具体的, 当 \(x\) 增长, 只有 \(y\) 减小才能找到更优秀的答案

实现

并不难写, 就不写了

总结

状态的设计应当便于处理限制

善于找到新增问题与原问题的共同点, 然后转化问题

善于手动模拟算法来找到问题

单调性优化非常的好用

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jsp前端页面识别不了后端传过来的model-${user.id}

调试: controller 成功接收到参数。并且给model传入数据。界面也跳转了 jsp文件中使用 ${user.id} 获取数据 但是处理的依然是 ${user.id} 而不是传入来的数据。 原因: 默认创建的web,其配置文件 web.xml文件是使用 2.3版本 <!DOCTYPE web-app PUBLIC"-//Sun Micros…

基于ESP32的桌面小屏幕实战[4]:硬件设计之PCB Layout

1. PCB Layout 步骤生成PCB确定PCB layout规范绘制板框尺寸布局 布局规范:按电气性能合理分区,一般分为:数字电路区(即怕干扰、又产生干扰)、模拟电路区(怕干扰)、功率驱动区(干扰源); 完成同一功能的电路,应尽量靠近放置,并调整各元器件以保证连线最为简洁; 对于质…

【C#脚本】C#调用Python脚本的方式(一),以PaddleOCR-GUI为例

以下文章来源于mingupup的学习记录 ,作者DotNet学习交流 前言 每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一…

Derby 数据库介绍(1)--简介

Apache Derby 是 Apache DB 的一个子项目,是一个完全用 Java 实现的开源关系数据库,采用 Apache License 2.0 许可;本文主要介绍其基本概念及安装。 1、Derby 特点 Derby 体积小——基础引擎和嵌入式 JDBC 驱动程序约 3.5MB。Derby 基于 Java、JDBC 和 SQL 标准。Derby 提供…

参数占位符 #{xx} 和 ${xx} 的区别

#{xx} :带有#{}的SQL会采用SQL预编译技术,预编译后的SQL中 #{} 被替换为 “?”,这里的 “?”叫变量占位符,在实际执行SQL时会用“xx”的实际值替换变量占位符,效率更高,可以防止SQL注入SQL预编译:MySQL执行SQL有几个步骤,“查缓存->[语法分析->优化->编译-&…

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别

三文带你轻松上手鸿蒙的 AI 语音 01-实时语音识别 前言 HarmonyOSNext中集成了强大的 AI 功能。Core Speech Kit(基础语音服务)是它提供的众多 AI 功能中的一种。 Core Speech Kit(基础语音服务)集成了语音类基础 AI 能力,包括文本转语音(TextToSpeech)及语音识别(Spee…

【原创】ARM64 实时linux操作系xenomai4(EVL)构建安装简述

本文简要记录在瑞芯微RK3588(ARM64)构建安装实时linux操作系统xenomai4的过程,以及实时性测试,希望对你有所帮助!目录0 环境说明1 内核构建2 库编译方式1 交叉编译方式2 本地编译3 测试单元测试hectic:EVL 上下文切换latmus:latency测试4 RK3588 xenomai4实时性能5 总结 本…

最新版chrome如何下载和安装?附安装包

前言 大家好,我是小徐啊。我们在Java开发应用的时候,经常是需要用到浏览器来帮助我们开发的。而浏览器中,谷歌浏览器chrome当属功能最强大的浏览器。今天小徐就来介绍下如何安装chrome。文末附获取方式。 如何安装chrome 首先,双击chrome的安装包,开始安装。然后,可以看到…

[笔记]均分纸牌问题

Index链形均分纸牌每次仅可交换\(1\)张 每次可交换多张环形均分纸牌每次仅可交换\(1\)张 每次可交换多张拓展性很强的贪心问题。或许能推广到树之类的结构上,或者拓展到方案计数问题之类,不过目前还没想好啦。 链形均分纸牌 每次仅可交换\(1\)张 最基础的例题是这样的:有\(n…

掌握PageRank算法核心!你离Google优化高手只差一步!

0 前言 98年前的搜索引擎体验不好:返回结果质量不高:搜索结果不考虑网页质量,而通过时间顺序检索易被钻空:搜索引擎基于检索词检索,页面中检索词出现的频次越高,匹配度越高,这样就会出现网页作弊的情况。有些网页为了增加搜索引擎的排名,故意增加某个检索词频率当时Goo…

ApacheDirectoryStudio如何安装和使用?附安装包

前言 大家好,我是小徐啊。ldap数据库是我们Java开发中,经常会用到的一种数据库。这种数据库是树形结构的,和平常的mysql等数据库还不太一样。但目前对应连接ldap数据库的连接工具比较少,且功能也不强大。今天,小徐就来介绍下一款比较好的连接ldap数据库的连接功能,那就是…

服务器 数据库被攻击如何处理

最近系统有点卡,查看了一下系统事件,发现有人攻击服务器数据库。 以下是我的解决方案 1、修改密码位复杂的密码 2、修改默认数据库默认端口目前已解决下面的腾讯的小哥给的建议,总体差不多一个意思 1、服务器设置大写、小写、特殊字符、数字组成的12-16位的复杂随机密码 ,…