博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【专题】偏序,扫描线
阅读量:6272 次
发布时间:2019-06-22

本文共 1525 字,大约阅读时间需要 5 分钟。

【关键字】偏序,数点,树状数组,线段树,扫描线。

因为涉及多种算法,所以整合到一起。

【扫描线】

二维数点,偏序

扫描线是一维离线的做法的统称,常用于解决k维偏序问题。

离线:将其中一维的询问排序后按顺序处理,从而实现按时间顺序处理的过程中可以O(1)统计空间上小于某个数字的答案。

将一维离线称为扫描线,就是因为离线的那维处理过程很像一条线按顺序扫描。

偏序:以二维偏序为例,对于任意(x,y),必须满足x<=A&&y<=B,也就是有两个单向限制,则是二维偏序。

扫描线解决k维偏序问题是经典中的经典。

一维偏序:排序扫描线  树状数组

二维偏序:排序扫描线+树状数组(差分)/线段树

三维偏序:排序扫描线+cdq分治+树状数组  排序扫描线+二维数据结构

数据结构实际上就是普通的处理一维,排序(离线)后按顺序就是用扫描线特殊的处理一维,k维中只有一维能使用扫描线。

一维用扫描线后,另一维用树状数组维护前缀和(包括前面行的,每个元素都代表一列),这就是典型的二维偏序问题解法了

扫描线就是主要用于解决k维偏序问题的,而解决矩阵数点问题完全是利用偏序问题来解决的。

矩阵可以理解为四个限制(四位偏序),但是两维和另两维之间有直接关系,所以可以差分成四个二维偏序,这样就只要在二维偏序的时候两维分别差分即可。

例题:

★经典 二维偏序,排序+树状数组

 排序+线段树

 等待解决=v=

嗷嗷待补:

矩阵面积并

【链与反链】

引用自: by vfleaking

大前提:在DAG上(有向无环图)

链是点的集合,这个集合中任意两点单向可达

反链是点的集合,这个集合中任意两点互相不可达。

★最小链覆盖=最长反链

最小反链覆盖=最长链

经典模型:最少严格递减子序列覆盖=最长不严格递增子序列

     最少不严格递增子序列覆盖=最长严格递增子序列(链与反链的互补关系)

不严格证明:从二分n log n求LIS的过程中可以得到一组合法解。

二分求解LIS:从前往后每个数字在替换掉序列b中第一个>=它的数字(这个数字的位置就是f[i]),如果没有则加在末尾。

二分过程中一个位置当前和之间的所有数字组成一个不增子序列,位置总数就是最长上升子序列。

int k=0;    for(int i=1;i<=n;i++){        int x=lower_bound(b+1,b+k+1,a[i]+1)-b;        f[i]=x;        if(x==k+1)b[++k]=a[i];else b[x]=a[i];    }
View Code

(顺便一提,LIS还可以写树状数组,查询值域前缀max,值域离散化——注意树状数组不能处理ai=0的情况,需整体+1)

这样替换的正确性在于:访问某位置时,其前面的位置一定存在数字在该位置之前(反证:若不存在,则一定会替换该位置),这样传递下去可以找到上升子序列。

最长上升子序列(LIS)本质上是二维偏序,要求满足a[i]<a[j]&&h[i]<h[j]的最长序列。

也可以视为二分图不交叉最大匹配(上帝选人):一维排序(a[i]),一维可以树状数组维护DP,也可以二分。

链模型转化:对于所有满足满足a[i]<a[j]&&h[i]>h[j]的点i和点j连接有向边,最长链覆盖=最长反链。

NOIP 1999 导弹拦截

最长链:偏序转化而来,参考LIS用DP+二分/树状数组。

链覆盖:floyd传递闭包(转化为可达信息),转化为最小路径覆盖,ans=N-最大匹配(二分图)。

转载于:https://www.cnblogs.com/onioncyc/p/7349552.html

你可能感兴趣的文章
股东致函雅虎董事会要求别再烧钱 雅虎反呛
查看>>
移动OA的魅力--大众点评的“企业号”运用法则
查看>>
芯片进口额远超原油 中国芯待发力
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>
关于如何以编程的方式执行TestNG
查看>>
智能照明造福千家万户 家居智能不再是梦
查看>>
物联网如何跳出“看起来很美”?
查看>>
浅谈MySQL 数据库性能优化
查看>>
拥抱白帽黑客,通用宣布安全漏洞报告项目
查看>>
《UNIX/Linux 系统管理技术手册(第四版)》——1.10 其他的权威文档
查看>>
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《第一桶金怎么赚——淘宝开店创业致富一册通》一一第1章 创业梦想,怎样起步...
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>