首页 > 其他分享 >CF2018E2 Solution

CF2018E2 Solution

时间:2024-10-03 19:33:08浏览次数:9  
标签:log 后缀 最大值 查集 Solution 端点 CF2018E2

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\) 的后缀最大值端点删去。

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

标签:log,后缀,最大值,查集,Solution,端点,CF2018E2
From: https://www.cnblogs.com/spdarkle/p/18445920

相关文章

  • Solution - Atcoder ARC157E XXYX Binary Tree
    考虑这个不存在\(\texttt{YY}\)的限制,与\(\texttt{XX}\)个数为变量的限制相比较,看起来\(\texttt{Y}\)就更特殊,于是考虑从\(\texttt{Y}\)的视角来分析问题。同时考虑到因为有\(A+B+C=n-1\),所以\(\texttt{XX}\)其实也不是很重要,因为只需要让\(\texttt{XY}\)和......
  • Solution - Atcoder ARC157D YY Garden
    考虑到因为有横轴数轴两部分的限制,不妨先固定下来一部分的限制再处理另一部分。对于这题来说横轴竖轴本质是相同的,于是不妨考虑固定横轴。如果知道了横轴的分割,那么对于竖轴上就可以根据分割情况知道合法的分割了。即考虑记\(f_i\)为考虑了竖轴的前\(i\)列,第\(i\)列为最......
  • CF2018E2 Complex Segments (Hard Version) 题解
    题目描述\(T\)组数据,给定\(n\)条线段\([l_i,r_i]\),称一个线段集合是复杂的,当且仅当:它可以被划分成若干个大小相等的线段组。两条线段相交当且仅当它们在同一组。求用这\(n\)条线段构成的复杂线段集合的最大值。数据范围\(1\len,\sumn\le3\cdot10^5\)。\(1\l......
  • AT_abc_373F Solution
    AT_abc_373FSolution\(O(n^3)\)的dp很容易想到,枚举重量,枚举物品,枚举物品选择数量,我们考虑把它优化到\(O(n^2)\),显然重量与物品的枚举不能避免,所以我们考虑省去数量的枚举。记\(num_{i,j}\)表示总质量为i价值达到最大时,j选择了多少个,对于当前枚举的重量i,我们枚举......
  • Solution - Kilonova 2837 P2
    先考虑q2。考虑到如果是以\(2^N\)为入手点因为进位的原因看起来就做不了。于是考虑以\(M\)为前缀入手。考虑刻画出\(M\)为前缀的数\(x\)的形式。可以考虑根据\(M\)后面的位数\(k\)来刻画,有\(x\in\bigcup_{k=0}^{\lfloor{\frac{L}{\log_210}}\rfloor}[M\tim......
  • P9676 [ICPC2022 Jinan R] Skills Solution
    P9676[ICPC2022JinanR]SkillsSolution拿到题目之后我们先考虑一个朴素dp:记\(f_{i,0/1/2,x,y}\)表示第\(i\)天,我们学习第1/2/3个技能,同时按照序号顺延下去的另两个技能分别有\(x,y\)天未学习的最大经验总和。这很明显是一个\(O(n^3)\)的dp,转移方程比较简单。我们......
  • WPF Image show picture in high resolution periodically via System.Timers.Timer
    <Windowx:Class="WpfApp411.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • Count Equation Solutions 题解
    前言题目链接:洛谷;UVA。题意简述求以下方程解的个数:\[a_1x_1-a_2x_2+a_3x_3-a_4x_4+a_5x_5-a_6x_6=0\]其中\(1\leqx_i\leqm\leq10^2\),\(x_i\in\mathbb{Z}\),多测。题目分析把\(a_2,a_4,a_6\)变成其相反数,变成\(\sum\limits_{i=1}^6a......
  • 『Solution of Monster&划艇&烟火表演』
    ABC275FMonster其实就是对凸壳的处理办法显然建立\(B\)的笛卡尔树,设\(f[i,j]\)为树\(i\)操作后最大值\(\lej\)的最小代价。显然离开子树后子树都是整体操作的有\[f[i,j]=\min(f[i,j-1],f[lc,x]+f[rc,y]+\max(\max(x,y)-j,0)\timesB_i)\\\]显然可以优化为:\[\begi......
  • 【题解】Solution Set - NOIP2024集训Day36 dp 优化 + 状态设计
    【题解】SolutionSet-NOIP2024集训Day36dp优化+状态设计https://www.becoder.com.cn/contest/5550最后一题较难。「NOIP2023」天天爱打卡考虑dp。\(f_{i,j}\):前\(i\)天,到第\(i\)天为止连续打卡\(j\)天。有转移:\[f_{i,0}=\max(f_{i,j})\\f_{i,j}=\max(f_{i......