首页 > 其他分享 >CF1034D Intervals of Intervals

CF1034D Intervals of Intervals

时间:2023-05-03 11:33:17浏览次数:46  
标签:le 区间 Intervals 端点 CF1034D 考虑 mathrm

简要题意

给定 \(n\) 个区间组成的序列,定义它的一个连续段的价值为这个段内所有区间的并覆盖的长度。求价值前 \(k\) 大的段的价值和。

数据范围:\(1\le n\le 3\times 10^5, 1\le k\le \min\{\frac{n(n-1)}{2}, 10^9\}\)。

题解

考虑一个经典问题,\(q\) 次询问求某个连续段的价值。考虑离线,动态维护对于当前右端点,每个左端点的答案。考虑一个位置最后一次被覆盖是在第 \(t\) 个区间,那么对于所有 \(1\le l\le t\) 这个位置都会贡献 \(1\)。那么考虑将右端点右移一位时如何维护。显然类似珂朵莉树,可以证明修改段的次数是均摊 \(\mathrm O(n)\)。那么直接考虑用线段树,修改段等价于一次区间加。总时间复杂度 \(\mathrm O(n\log n)\)。把线段树换成主席树,可以做到在线询问。

接着考虑这题,容易想到先找到排名为 \(k\) 的连续段的价值,就很好做了,那么二分答案,转化为计数价值大于 \(X\) 的连续段。考虑一个结论:\(V(L_i, R_i + 1)\ge V(L_i, R_i) \ge V(L_i + 1, R_i)\)。则存在 \(pos(r, X)\) 为最大的 \(l\) 使得 \(V(l, r) > X\)。同时容易得出,\(V(r, X)\) 关于 \(r\) 单增。通过一个指针维护,把珂朵莉树放在二分外面,预处理出每个 \(r\) 增加的区间,用前缀和维护即可,时间复杂度 \(\mathrm O(n\log n)\)。

标签:le,区间,Intervals,端点,CF1034D,考虑,mathrm
From: https://www.cnblogs.com/kyeecccccc/p/17368791.html

相关文章

  • CF1034D Intervals of Intervals 题解
    传送门CF1034DIntervalsofIntervals题目大意有\(n\)个线段,第\(i\)个是\([a_i,b_i]\)。定义区间\([l,r]\)的价值是第\(l\)个线段到第\(r\)个线段的并的长度。找出\(k\)个不同的区间,使得总价值最大。输出最大总价值。\(1\len\le3\times10^5,1\lek\le......
  • [LeetCode]Merge Intervals
    Question本题难度Hard。排序+双指针【复杂度】时间O(Nlog(N))空间O(N)【思路】先按照每个元素的​​​start​​​从小到大进行排序。然后利用双指针法,设置区间​​......
  • [ICPC2022济南站] H.Set of Intervals 【分类讨论】
    分析:只有一个区间的时候输出1只有两个区间的时候,只有三种情况:包含,相离,相交。可以推出一个数学式子计算相交和相离的情况下的答案,我们用$getans(l_1,r_1,l_2,r_2)$表示。......
  • 56.合并区间 merge-intervals
    问题描述56.合并区间解题思路思路与452.用最少的箭引爆气球,只不过这里intervals[i][1]=max(intervals[i][1],intervals[i-1][1]),如果存在重叠,修改res最后一个元素......
  • CF1034D Intervals of Intervals
    题意:给定\(N\)条线段,定义一个区间的价值为区间线段并的长度,求前\(K\)大区间价值和。题解:首先考虑一个简化版本,求区间线段并。扫描线,维护每个左端点的答案。对于每个......
  • CF1034D
    \(3500\)。根本想不到这种思路。先考虑这么一个问题:给定\(n\)个区间\([a_i,b_i)\)。\(q\)次询问,每次查询\((\cup_{l\lei\ler}[a_i,b_i))\cap\mathbbZ\)的元......
  • 56. Merge Intervals
    Givenanarray of intervals where intervals[i]=[starti,endi],mergealloverlappingintervals,andreturn anarrayofthenon-overlappingintervalstha......
  • LeetCode 435. Non-overlapping Intervals
    贪心按照有边界排序,只有先选择了右边边界小的,才可以放下更多的区间classSolution{public:interaseOverlapIntervals(vector<vector<int>>&intervals){......
  • 435.non-overlapping-intervals 无重叠区间
    问题描述435.无重叠区间解题思路本题和452.用最少数量的箭引爆气球可以说解题思路一模一样,区间数减去452.用最少数量的箭引爆气球就可以说是本题要求的答案,但是要注意的......
  • LeetCode_Array_56. Merge Intervals (C++)
    目录​​1,题目描述​​​​2,解题思路​​​​3,代码【C++】​​​​4,运行比较​​1,题目描述Givenacollectionofintervals,mergealloverlappingintervals.Example1:I......