首页 > 其他分享 >偏序问题总结

偏序问题总结

时间:2023-02-16 18:35:30浏览次数:59  
标签:偏序 总结 lesseqgtr 问题 一维 我们 逆序

首先既然讲的是偏序问题,先说明一下偏序关系的概念:

偏序关系符号为 \(\prec\),是一种满足自反性,反对称性和传递性的关系。

好叭我承认上面那个定义不是人可以理解的,这里我对于多维偏序问题逐个解释这个偏序关系的情况,因为我也没法说出来这个东西的具体定义,心里懂就好辣。

所以我们先从一维偏序讲起一维偏序完全没有讲的必要,我们看一下一维偏序是什么东西(

给定已知数组 \(a_1,a_2,\cdots,a_n\),求 \(a_j \lesseqgtr a_i\) 的 \(a_j\) 数量。

这 tm 就是红题啊.jpg

所以我们从二维偏序讲起。

二维偏序

首先我们可以根据上文对一维偏序那个东西都描述猜出二维偏序是个什么问题:

给定已知点对 \((x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\),求 \(x_j \lesseqgtr x_i\) 且 \(y_j \lesseqgtr y_i\) 的 \(a_j\) 数量。

此时的偏序关系为

\[(x_j,y_j) \prec (x_i,y_i) \overset{\text{def}}{=} x_j \lesseqgtr x_i \operatorname{and} y_j \lesseqgtr y_i \]

最经典的一个二维偏序就是逆序对噜。回忆一下逆序对的两个条件:

  • \(j < i\)

  • \(a_j > a_i\)

发现和前面的式子一模一样!

然后就是重要的计算部分了(这里不仅仅可以求逆序对,也可以推广到所有二位偏序问题):

同时存在两个条件一定不容易维护答案,所以我们先固定一维,再用数据结构维护第二维(核心思想)。

对于逆序对问题,我们选择按照输入顺序处理,将前面的数加入一个桶中,对于每一位求桶中比他大的数的个数,累加到答案上。当然在这个问题可能不会太好搞 hh 因为我们不知道桶的上界所以查询会遇到麻烦,我们反着做,从第 \(n\) 位开始倒序处理,对于每个数查询比他小的。

简化一下这个维护过程,我们需要维护一个序列,支持单点加,区间求和,我们选择树状数组。

问题就在 \(O(n \log n)\) 的美好复杂度中解决了!

Question on luogu

三维偏序

标签:偏序,总结,lesseqgtr,问题,一维,我们,逆序
From: https://www.cnblogs.com/victoryang-not-found/p/17127400.html

相关文章