2024/12/27

news/2024/12/28 17:03:49/文章来源:https://www.cnblogs.com/ddxrS/p/18637677

模拟赛。

A

考虑一个 dp,定义 \(f_{l,r}\) 表示将区间 \([l,r]\) 中的数全部删完的方案数。有转移:

\[\max(f_{l+1,r-1},cost(l,r))\to f_{l,r}\\ \max(f_{l,k},f_{k+1,r})\to f_{l,r} \]

可以在 \(O(n^3)\) 的复杂度内解决这个问题。

让我们按照 dp 值从小到大来更新每个 \(f_{l,r}\),可以发现,每个 \(f_{l,r}\) 只需要被更新一次。

所以,可以使用一个 bitset 来记录那些区间还没被更新和当前左/右端点的那些区间已经被更新。

将两个 bitset 与起来,就是当前 \(f_{l,r}\) 可以更新到的值。

时间复杂度 \(O(\frac{n^3}{w})\)

B

一个贪心的策略是越大的 \(b_i\) 放在越前面越好。

但是现在还有一个 \(a_i\)

我们可以先将它们按照 \(b_i\) 从大到小来排序,然后依次判断加不加入。

如果可以直接加入,那么就加入。

否则,就先加入它,然后选择一个删除后可以使代价最小的删除。

删除一个 \(i\) 可以减少的代价为 \(a_i+kb_i\) 加上其之后的所有 \(b_j(i<j)\) 也就是 \(b\) 的后缀和。

相当于我们要维护:

  • 插入/删除一个数对 \((a_i,b_i)\)

  • 区间对 \(a_i\) 加,来统计后缀和。

  • 区间对 \(a_i\)\(b_i\)

  • 求全局可以减少的最大代价。

  • 求全局 \(a_i\) 的和。

可以使用 KTT 来维护。

C.

原:AT_joisc2017_d 切符の手配

先对输入的数据进行处理,令 \(l_i=a_i\)\(r_i=b_i\)。若 \(l_i>r_i\) 则交换 \(l_i\)\(r_i\)。然后将 \(r_i\) 减一。

对于每一个人,我们可以选择将 \([l_i,r_i]\)\([1,l_i-1]\)\([r_i+1,n]\) 加一,要求全局最大值最小。

设初始时每一个点被覆盖的次数为 \(a_i\),翻转某些区间后的每一个点被覆盖的次数为 \(b_i\)

性质 \(1\):选择翻转的人,他们的区间 \([a_i,b_i]\) 有交。

证明:对于两个翻转的人,若他们的区间无交,那么他们覆盖的区间一定包含他们不翻转的区间的并,且他们的并均只会被覆盖一次。

那么此时若是不翻转他们的区间一定不会更劣。

所以,对于每一个被翻转的人,一定存在一个点使得他们的区间 \([a_i,b_i]\) 都经过这个点。

同时,我们可以发现,答案是具有单调性的。考虑来二分答案,假设二分到了 \(mid\)

枚举一个点 \(x\),表示所有被翻转的区间都包含点 \(x\)

\(p_i\) 表示左端点在 \(i\)\(i\) 之前选择要翻转的区间的个数。

那么在 \(x\)\(x\) 之前的点 \(i\)\(b_i=a_i-p_i+p_x-p_i\le mid\)

可以推出 \(p_i\ge \lceil \frac{a_i+p_x-mid}{2}\rceil\),通过枚举 \(p_x\) 的值可以得到 \(p_i\) 的下界。

我们只需要贪心的将所有 \(p_i\) 都补到下界,然后判断 \([x+1,n]\) 是否合法。

具体的,我们可以依次枚举 \(i=1,2,\dots,x\),将所有 \(l_j=i\) 的区间按照右端点全部加入一个大根堆里面,每次取出右端点最大的区间来覆盖。

可以做到 \(O(n^3\log n)\)

假设所有被翻转区间的交为 \([x,y]\),令 \(t\) 为在区间 \([x,y]\)\(b_i\) 取到最大值的点。

性质 \(2\):一定存在最优方案使得 \(b_t\ge \max\limits_{i=1}^n b_i-1\)

证明:反证。若 \(b_t\le\max\limits_{i=1}^{n}b_i-2\),那分别取消一个 \(l=x\)\(r=y\) 的区间,那么 \(\max\limits_{i=1}^n b_i-\) 值不会变大,所以这样调整答案不会劣,但同时 \(b_t\)\(\max\limits_{i=1}^n b_i\) 的差值会变小。

性质 \(3\):一定存在最优方案使得 \(a_t=\max\limits_{i=1}^n a_i\)

证明:如果存在一个 \(a_k>a_t\),那么 \(k\not\in[x,y]\),存在一个翻转了的区间覆盖了 \(k\) 而没覆盖 \(t\)

由性质 \(2\)

\[a_k-a_t\ge 1,b_t\ge b_k-1 \]

所以

\[a_k-a_t+b_t-b_k\ge0 \]

也就是

\[a_k-b_k\ge a_t-b_t \]

意味着包含 \(k\) 的翻转区间个数大于等于包含 \(t\) 的个数,矛盾。

所以,\(mid=b_t=a_t-p_x\) 或者 \(mid=b_t+1=a_t-p_x+1\)

也就是 \(p_x=a_t-mid\)\(p_x=a_t-mid+1\),所以可以省略掉一个枚举 \(p_x\)\(O(n)\)

性质 \(4\)\(x\) 可以取任意满足 \(a_x=\max\limits_{i=1}^n a_i\)\(i\)

证明:假设存在一个在 \([x,y]\) 外的 \(k\) 满足 \(a_k=\max\limits_{i=1}^n a_i\)

由于覆盖了 \(k\) 的翻转区间个数小于覆盖 \(t\) 的,所以

\[a_k-b_k\ge a_t-b_t-2 \]

由性质 \(3\) 可知,\(a_t=a_k\),所以 \(b_k-b_t\ge 2\),与性质 \(2\) 矛盾。

此时我们就可以在省略一个枚举 \(x\)\(O(n)\)

综上所述,每次二分的 check 我们只需要判断两次 \(p_x\) 的取值,同时 \(x\) 可以取任意 \(a_x=\max\limits_{i=1}^n a_i\)

所以我们可以在 \(O(n\log^2n)\) 的复杂度内解决这个问题。

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

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

相关文章

Rules Of JSX 渲染列表 ‼️State

JSX只能拥有一个root元素,即只能有一个父元素。React不会渲染true或false到界面上,但会渲染0,1。 isOpen && <p>Hello!</p> 上述短路表达式意为:只有当isOpen为真时,才会执行第二部分内容,返回第二部分内容。如果isOpen为假且它的值为0,表达式会返回…

FastStone Capture10.9电脑截图工具中文绿色便携版

前言 FSCapture是一款集图像捕捉、浏览编辑、视频录制等功能于一身的屏幕截图软件,软件具有体积小巧、功能强大、操作简便等优点,其方便的浮动工具条和便捷的快捷键堪称完美结合。截图后的图片编辑与保存选项也特别丰富和方便,内置功能完善的图像编辑器,支持几乎所有主流图…

研途考研视频课件课程下载工具,如何在电脑端下载研途考研视频课程课件资料PDF,PPT到本地?

一. 安装研途课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/kaoyanvip_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学无止下…

golang 高频面试题

简述 Goroutine 的调度流程?Goroutine 是 Go 语言中的轻量级线程,Go 运行时使用调度器来管理 Goroutine 的执行。调度器的设计旨在高效地利用系统资源,并在多个 Goroutine 之间公平地分配 CPU 时间。以下是 Goroutine 调度的简要流程:Goroutine 的创建:当通过 go 关键字启…

NetBackup备份恢复工作流程workflow

# NetBackup备份恢复工作流程 在早期的NetBackup Troubleshooting guide中,详细描述了备份和恢复的步骤以及各个进程之间的调用关系,但是7.7以后的文档把这部分内容给取消了。在logging reference里面有类似内容,但是讲得不太清晰。备份流程从客户端或者Master Server GUI发…

如何快速体验chatGPT(AI问答)

由于账号的原因无法使用chatGPT,那有什么其他的办法可以体验一下这样的AI问答呢? 1、豆包 https://www.doubao.com/ 2、在魔塔modelscope的选择要体验的模型,在model详情页里,体验模型 https://www.modelscope.cn/studios/Qwen/QwQ-32B-preview/ 3、智谱AI https://open.…

合作招募

介绍 2025年将为潜在客户解决技术问题,并整理技术文档以满足其需求。根据问题的复杂度,文档的字数通常在1000-2500字之间,并配有相关截图 但为了提高合作效率并确保项目成功,彼此需共同承担部分前期成本(单次共承担最高不超30元,可当做找工作时的路费)。 该费用用于支持前…

第三次Blog 题目集7~8

一,前言 在题目集7和8中,我们逐步完善了智能家居强电电路模拟程序的功能和复杂性。题目集7以基本电路元件的特性和连接为核心,涵盖了开关、调速器、灯、风扇等设备的模拟,实现了多种控制设备和受控设备的电路设计与状态输出;而题目集8在此基础上新增了管脚电压显示、电流限…

题集7-8的总结

一:前言: 1.知识点:主要包括类和对象的使用、数据封装、方法的定义和使用、继承、多态、泛型、抽象类,集合框架,异常处理,字符串处理、以及基本的输入输出操作。 2.题量:现在的题目集都是一道题了,题量没什么说的。 3.难度:每次题集的难度都较大,每次都要7.8小时及以…

『联合省选2025集训』『图的连通性进阶』 知识点 总结

若有长风绕旗,那便是我在想你了。前言若有长风绕旗,那便是我在想你了。这周讲了个图论连通性板块的一些进阶知识,周六全国第一给我们讲了一些树上的问题,感觉树剖板块实现难度较大,后面几道偏思维的题会有些许好转。 这里就先写写连通性相关的进阶的一些知识点吧。 主要涵…

『联合省选2025集训』『耳分解,双极定向,三连通分量』 知识点 总结

若有长风绕旗,那便是我在想你了。前言若有长风绕旗,那便是我在想你了。这周讲了个图论连通性板块的一些进阶知识,周六全国第一给我们讲了一些树上的问题,感觉树剖板块实现难度较大,后面几道偏思维的题会有些许好转。 这里就先写写连通性相关的进阶的一些知识点吧。 主要涵…

第七-八次作业总结

一、前言 该系列题目均为设计与实现一个家居强电电路模拟程序,题目难度复杂度逐步提升,题目数量和输入信息也逐步增加。以下是对这两道题的总结: 1. 知识点家居强电电路模拟程序-3 受控窗帘设备的模拟 多个并联电路串联在一起的情况 串联电路中包含其他串联电路的情况 家居强…