首页 > 其他分享 >【CF1672I】PermutationForces(线段树)

【CF1672I】PermutationForces(线段树)

时间:2022-12-31 22:23:35浏览次数:53  
标签:log 删除 线段 删掉 CF1672I leq PermutationForces 凸壳

记 \(c_i=|i-p_i|\)。可以证明,删掉一个 \(c_i\leq s\) 的点后,只会让 \(c_j>s\) 的点的 \(c_j\) 变小,且原本 \(c_j\leq s\) 的点的 \(c_j\) 仍不会大过 \(s\)。也就是说我们每次能随便删掉一个 \(c_i\leq s\) 的点来判断合法性。

但这样每次删除后的变化都得 \(O(n)\) 处理,那么只能得到一个 \(O(n^2\log n)\) 的做法。考虑找一种更好的删除顺序。

发现若每次我删除 \(c_i\) 最小的点,那么其他点的 \(c_j\) 都不会变大只会变小。放到平面上,操作就是 \((i,p_i)\) 左上角和右下角的点的 \(c_j\) 减一,然后再把 \((i,p_i)\) 删掉。这个过程可以用 KDT 来实现做到 \(O(n\sqrt n)\) 的复杂度(你发现 \(s\) 也不用二分了,只需对每次删除的 \(c_i\) 取 \(\max\) 即可)。

注意到,由于我们要找的是离 \(y=x\) 最近的那些点,所以我们可以暂时只维护左上部分点的右下凸壳和右下部分点的左上凸壳,这样一次操作就变成了区间加可以一 log 维护。

如何找到新加入的点?可以把凸壳改为前缀/后缀最值,这样就容易用线段树维护了。

新加入的点的权值如何计算?这看起来是个二维数点问题只能双 log 做,但实际上结合回原来的题意可以直接改回 \(x>A\) 加 \(y>B\) 减,这就能一 log 维护了。

总时间复杂度 \(O(n\log n)\)。

这个套路其实是第二次见了,第一次见是在,结果现在还是不会……

标签:log,删除,线段,删掉,CF1672I,leq,PermutationForces,凸壳
From: https://www.cnblogs.com/ez-lcw/p/17017455.html

相关文章

  • P3919 【模板】可持久化线段树 1(可持久化数组)
    \(P3919\)【模板】可持久化线段树\(1\)(可持久化数组)一、题目描述如题,你需要维护这样的一个长度为\(N\)的数组,支持如下几种操作:在某个历史版本上修改某一个位置上......
  • 动态开点线段树说明
    动态开点线段树说明作者:Grey原文地址:博客园:动态开点线段树说明CSDN:动态开点线段树说明说明针对普通线段树,参考使用线段树解决数组任意区间元素修改问题在普通线段树......
  • 【51Nod1133】不重叠的线段
    DescriptionX轴上有N条线段,每条线段有1个起点S和终点E。最多能够选出多少条互不重叠的线段。(注:起点或终点重叠,不算重叠)。例如:[15][23][36],可以选[23][36],这2条线段互......
  • 线段树的优雅写法
    可以将Tag和Info用结构体封装,重载运算符Tag+Tag(标记合并),Info+Info(信息合并),Info+=Tag(打标记),这样就可以使用更优雅的方法写线段树了。例子:P2572#include<iostr......
  • 线段树
    title:线段树tags:算法date:2022-11-1510:37:17本文章遵守知识共享协议CC-BY-NC-SA,转载时须在文章的任一位置附上原文链接和作者署名(rickyxrc)。推荐在我的个人博......
  • 浅谈线段树
    本篇将会记录我的线段树学习时长其实很早就想学了,但由于奇妙的原因咕了好久2021.1.5今天讲讲线段树概念和初始建树线段树的概念线段树是个二叉树线段树的每个区间是......
  • 线段树复习笔记——可持久化线段树(主席树)
    可持久化线段树——主席树引入(P3834【模板】可持久化线段树2-洛谷)看看题面:题目描述如题,给定\(n\)个整数构成的序列\(a\),将对于指定的闭区间\([l,r]\)查询其......
  • HDU4553 线段树维护最长连续区间
    //题意:(略了)//思路:这里很明显是要维护区间最大连续子段,按照以下优先级查找//A1.左边区间的连续子段是否满足//A2.左右两个区间中间合并起来的子段是否满足......
  • P3372 【模板】线段树 1
    P3372【模板】线段树1题目简述对于一段数列,有如下两种操作1xyk:将区间\([x,y]\)内每个数加上\(k\)。2xy:输出区间\([x,y]\)内每个数的和。思路线段树......
  • 线段树复习笔记——综合应用(吉司机线段树)
    线段树的综合应用接下来,以洛谷P6242【模板】线段树3(超级毒瘤)为例,来看一下线段树的综合应用。先来看一下此题题意,很熟悉的题面:题目描述给出一个长度为\(n\)的数列......