CF2018E2 Solution

news/2024/10/3 19:43:55

CF2018E2 Solution

先考虑E1的做法。

首先我们如果钦定一组 \(k\) 条线段的话,容易求出最大组数。

简单来讲就是将所有端点按照右端点排序,这样只需要考虑一个偏序,然后扫描,将区间 \([l_i,r_i]\) 加一,当发现某个点的值为 \(k\) 时,就说明分成了一组方案。

此时我们一定清空,然后记录当前的 \(r\),也就是后面选的点左端点不得小于等于 \(r\)

直觉上,这样贪心选择一定更优。设这样的答案为 \(k\)

我们的答案可以表示为 \(\max k·f(k)\)

而我们发现,对于一个固定的 \(f(k)\),它是随着 \(k\) 单调不升的,这很显然。

所以对于一个固定的 \(f(k)\),可以通过二分的形式得到 \(\max k\),这样就足以在 \(O(n\log n\sqrt{n\log n})\) 解决问题,足以通过 E1。

事实上在这里可以通过整体二分求得所有的 \(f(k)\),它的复杂度足以降至 \(O(n^{1.5}\log n)\),这是因为在第 \(d\) 层时,值域被划分为了 \(O(\frac{n}{2^d})\) 长的 \(2^d\) 段,在 \([\frac{n}{2^{d/2}},n]\) 范围内 \(f\le 2^{d/2}\),而 \([1,\frac{n}{2^{d/2}}]\) 又仅有 \(O(2^{d/2})\) 段,所以这里总段数是 \(O(2^{d/2})\) 的,总的整体二分复杂度就是 \(O(\sum^{\log_2n} 2^{d/2})=O(\sqrt n)\) 的。

那么考虑优化线段树这个过程,一个很重要的技巧是,我们只关心全局最大值,以及后缀加

那么可以使用并查集,维护后缀最大值出现位置

首先,我们使端点互不相同,具体地,将原本的所有端点排序(如果是相同值,原本为右端点的放在后面),然后依次给其赋值 \(1\sim 2n\)

这显然不会破坏相交关系也不会新增。

然后我们利用并查集维护差分,每次后缀加只会造成新的 \(r\) 成为一个后缀最大值,以及增加的最大的 \(< l\) 的后缀最大值端点删去。

利用并查集维护这个即可。

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

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

相关文章

昨天放洛谷的图

因为刷不出来以及有人问所以放这了

python多进程debug

代码调试 问题阐述 最近遇到一个python debug多进程的问题 有一个进程A,这个进程会fork出8个进程B,fork join结束后,又会fork出8个进程A。 假设按时间有序,我就只想断fork出的第一个B和第一个进程A,怎么做?(breakpoint just break only once)类似于java多线程调试的意思…

一些数学知识题

欧几里得算法费马小定理 当a,p都是是质数时,a^(p-1)=1(mod p) 证明: 举个例子 a=2,p=5; 1,2,3,4 集合(1) {1,2,3,4...,(p-1)} 2,4,6,8 => %5 => 2,4,1,3 集合(2) {1a%p,2a%p,3a%p,4a%p...,(p-1)a%p} 我们发现{1,2,3,4}和{2,4,1,3}只是…

题解:洛谷P2339 [USACO04OPEN] Turning in Homework G

题目链接:洛谷P2339 [USACO04OPEN] Turning in Homework G 首先我们考虑如何处理到达给定时间后才能交作业这一限制。其实在生活中,我们一般只会考虑什么时候交作业截止 (除了某些卷王),这样我们只用考虑如何在最大结束时间之前交作业,而不是在所有作业都没开始交之前考虑…

独立站如何批量查收录,教你独立站如何批量查收录的简单方法

独立站批量查收录是提升网站SEO效果的重要步骤。以下提供几种简单且实用的方法,帮助你高效地批量查询独立站的收录情况: 一、使用搜索引擎的Site指令结合自动化脚本 了解Site指令: 在搜索引擎(如谷歌)的搜索框中输入“site:域名”(替换为你的实际域名),执行搜索后,可以…

谷歌收录查询工具,告诉你谷歌收录查询工具使用指南

谷歌收录查询工具是网站管理员和SEO专家用于监控和管理网站在谷歌搜索结果中表现的重要工具。以下是一份详细的谷歌收录查询工具使用指南,旨在帮助你更好地了解和使用这些工具。 一、Google Search Console(谷歌搜索控制台) Google Search Console是谷歌官方提供的免费工具,…

『模拟赛』多校A层冲刺NOIP2024模拟赛01

『模拟赛记录』多校A层冲刺NOIP2024模拟赛01Rank 打得还可以总A. 构造字符串 签,但是挂了 40pts。 发现判条件只有相等和不相等,于是想到并查集维护连通块,将强制相同的两个位置的连通块合并,强制不同的先记下,最后统一判断。 重点在细节处理,合并连通块时要将位置靠后的…

虚拟机类加载机制

1. 类加载时机 一个类型(接口/类)从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备、解析三个部分统称为连接(Linking)。 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,…