题目链接:点击查看

题目大意:给出 n 个点,每个点有三个属性 a , b , c ,对于每个点 i 来说,求出有多少个 j 满足 a[ j ] <= a[ i ] && b[ j ] <= b[ i ] && c[ j ] <= c[ i ]

题目分析:三维偏序的模板问题,咕咕咕了有一年的CDQ分治,今天终于补出来了,简单总结一下,一维偏序排个序就出来了,二维偏序是对一维排序,另一维用线段树或树状数组维护,三维的话,第一维排序,第二维用归并排序维护,第三维用线段树维护,在归并排序的过程中计算贡献就好了

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e5+100;struct Node
{int a,b,c,f,w;bool operator==(const Node& t)const{return a==t.a&&b==t.b&&c==t.c;}bool operator<(const Node& t)const{if(a!=t.a)return a<t.a;if(b!=t.b)return b<t.b;return c<t.c;}
}a[N],t[N];int c[N],ans[N],n,k;int lowbit(int x)
{return x&(-x);
}void add(int pos,int val)
{while(pos<=k){c[pos]+=val;pos+=lowbit(pos);}
}int ask(int pos)
{int ans=0;while(pos){ans+=c[pos];pos-=lowbit(pos);}return ans;
}void CDQ(int l,int r)
{if(l==r)return;int mid=l+r>>1;CDQ(l,mid);CDQ(mid+1,r);int p=l,q=mid+1,tot=l;while(p<=mid&&q<=r){if(a[p].b<=a[q].b){add(a[p].c,a[p].w);t[tot++]=a[p++];}else{a[q].f+=ask(a[q].c);t[tot++]=a[q++];}}while(p<=mid){add(a[p].c,a[p].w);t[tot++]=a[p++];}while(q<=r){a[q].f+=ask(a[q].c);t[tot++]=a[q++];}for(int i=l;i<=mid;i++)add(a[i].c,-a[i].w);for(int i=l;i<=r;i++)a[i]=t[i];
}int unique()
{int cnt=0;for(int i=1;i<=n;i++){if(a[i]==a[i-1])a[cnt].w++;elsea[++cnt]=a[i];}return cnt;
}int main()
{
#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);scanf("%d%d",&n,&k);int nn=n;for(int i=1;i<=n;i++){scanf("%d%d%d",&a[i].a,&a[i].b,&a[i].c);a[i].w=1;}sort(a+1,a+1+n);n=unique();CDQ(1,n);for(int i=1;i<=n;i++)ans[a[i].f+a[i].w-1]+=a[i].w;for(int i=0;i<nn;i++)printf("%d\n",ans[i]);return 0;
}

洛谷 - P3810 【模板】三维偏序(陌上花开)(CDQ分治套树状数组)相关推荐

  1. [BZOJ4889][洛谷P3759][TJOI2017]不勤劳的图书管理员 分块+树状数组

    题目描述 加里敦大学有个帝国图书馆,小豆是图书馆阅览室的一个书籍管理员.他的任务是把书排成有序的,所以无序的书让他产生厌烦,两本乱序的书会让小豆产生这两本书页数的和的厌烦度.现在有n本被打乱顺序的书, ...

  2. 【CJOJ2616】 【HZOI 2016】偏序 I(cdq分治,树状数组)

    传送门 CJOJ Solution 考虑这是一个四维偏序对吧. 直接cdq套在一起,然后这题有两种实现方法(树状数组的更快!) 代码实现1(cdq+cdq+cdq) /*mail: mleautoma ...

  3. 洛谷P3987 我永远喜欢珂朵莉~ 树状数组+vector(暴力)

    题目链接:我永远喜欢珂朵莉- 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到 ...

  4. BZOJ 2716 [Violet 3]天使玩偶 (CDQ分治、树状数组)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2716 怎么KD树跑得都那么快啊..我写的CDQ分治被暴虐 做四遍CDQ分治,每次求一个 ...

  5. 洛谷1527(bzoj2738)矩阵乘法——二维树状数组+整体二分

    题目:https://www.luogu.org/problemnew/show/P1527 不难想到(?)可以用二维树状数组.但维护什么?怎么查询是难点. 因为求第k小,可以考虑记权值树状数组,把比 ...

  6. 洛谷P3987 我永远喜欢珂朵莉~(set 树状数组)

    题意 题目链接 Sol 不会卡常,自愧不如.下面的代码只有66分.我实在懒得手写平衡树了.. 思路比较直观:拿个set维护每个数出现的位置,再写个线段树维护区间和 #include<bits/s ...

  7. 【洛谷5069】纵使日薄西山【set】【树状数组】

    传送门 最nb的就是这种算法简单思维困难的题. 题目说,选最大,将左中右三个一起减少. 使用瞪眼法你要发现一个性质: 修改一个数,那左中右的相对大小不变.所以它左右的数不会被修改,永远不会.因为其它数 ...

  8. 洛谷 P3353 在你窗外闪耀的星星(树状数组)

    利用数组在 x 处做个映射,为 x 点处的亮度之和,这样利用树状数组在区间查询的时候要注意一下端点的情况 从位置 1 开始,一直到 1e5,寻找最大的区间和,复杂度为 O(1e5logn),不开 o2 ...

  9. 分治算法,逆序对,三维偏序与CDQ分治

    分治算法基本思想 当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出. 对于这类问题,我们往往先把它分解成几个子问题,找到求出 ...

最新文章

  1. 如何调试你的C#程序
  2. st7789v tft 驱动电路_图解宁波博信出品的KEEWAY摩托车数字仪表盘,附测绘的电路图...
  3. ABP入门系列(7)——分页实现
  4. 服务器无法显示大内存的处理办法
  5. 1102示波器使用方法_使用示波器进行故障诊断的方法(1):常见传感器波形分析-汽车用品行业...
  6. breeze源码阅读心得
  7. 计算机主机安装系统安装系统,系统重装
  8. 数据库原理与应用(SQL Server)教程 主键、外键以及联合主键、复合主键和设置种子数目和增量
  9. 在关于测试高速光纤链路的BICSI会前研讨会上获得3个CEC
  10. CCKS 2018 | 工业界论坛报告简介
  11. 你只会用 StringBuilder?试试 StringJoiner,真香!
  12. 模电里的时变信号直流信号交流信号字母大小写的规定
  13. HTML5 20180918
  14. 第二章:09流程控制[2switch]
  15. 【杭电5053】the Sum of Cube
  16. C语言绘图示例-调色板
  17. php算法----队列
  18. deny all后如何优雅的处理403
  19. 2019年的敬业福要贬值了,来看看百分百获取敬业福的终极大招。
  20. python opencv报drawContours '(-215) npoints 0'

热门文章

  1. 域控 正在应用计算机设置,域控制器下发的用户组策略在ou内的用户上没有应用...
  2. zookeeper的设计猜想-关于 2PC 提交
  3. 分布式认证需求-开放认证体系
  4. AQS.doReleaseShared
  5. MyBatis 架构分层与模块划分
  6. Spring IOC 容器根据Bean 名称或者类型进行autowiring 自动依赖注入
  7. 深入分析EnableAutoConfiguration
  8. 商品评价 - 信息脱敏
  9. 下单消息的发送和接收案例
  10. keepAliveTime和线程工厂