关于偏序问题的一些总结

所谓偏序就是当你知道元素A,B,C时,元素A<B,且A<C,但是B和C之间的关系却无法比较的现象

在ACM中,这种类型的题目通常会告诉我们n个数组,每个元素的各属性对应于不同数组的同一位置的值

询问通常是回答比这元素小的有几个,或者是LIS这样的dp问题。


而解决偏序问题通常有以下方法:排序,数据结构(树状数组,线段树,平衡树),cdq分治,分块。


接下来简单介绍关于维数不同的偏序该采用什么策略。

一维:这个其实不能叫做偏序,一维是全序的,这种情况只要直接排序就可以解决,当然使用数组结构也可以。

二维:先对第一维排序,然后第二维可以用cdq分治,也可以使用数据结构维护。

三维:同上,第一维要排序,然后可以两重cdq分治,cdq分治+数据结构,线段树或树状数组套平衡树

四维:一维排序,然后两重cdq分治+数据结构,或者cdq分治+线段树或树状数组套平衡树

五维:一维排序,然后两重cdq分治+线段树或树状数组套平衡树


以上方法的效率基本是每上一维多一个log,但是空间基本都是nlog(n)的,数据大的话到五维可能就超时了

关于不同方案间的优劣的话,排序是必须的,直接调用c++的快排即可,数据结构之间树状数组是最值得使用

的,常数小而

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值