十分巧妙。

Code:

  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <cstring>
  4. #define setIO(s) freopen(s".in","r",stdin)
  5. #define maxn 200000
  6. #define N 3000000
  7. #define ll long long
  8. using namespace std;
  9. int k,n;
  10. int C[N],ans[maxn],cnt[maxn];
  11. int lowbit(int x){ return x&(-x); }
  12. void add(int pos,int x){
  13. while(pos<=k) C[pos]+=x,pos+=lowbit(pos);
  14. }
  15. int query(int pos){
  16. int sum=0;
  17. while(pos>0) sum+=C[pos],pos-=lowbit(pos);
  18. return sum;
  19. }
  20. struct OPT{
  21. int x,y,z,w,idx;
  22. }arr[maxn],opt[maxn];
  23. int cmpx(OPT a,OPT b){ return (a.x==b.x&&a.y==b.y)?(a.z<b.z):((a.x==b.x)?a.y<b.y:a.x<b.x); }
  24. int cmpy(OPT a,OPT b){ return (a.y==b.y)?a.z<b.z:a.y<b.y; }
  25. void solve(int l,int r){
  26. if(l>=r) return;
  27. int mid=(l+r)>>1;
  28. solve(l,mid),solve(mid+1,r);
  29. sort(opt+l,opt+mid+1,cmpy),sort(opt+mid+1,opt+r+1,cmpy);
  30. int p=l,q=mid+1;
  31. for(;q<=r;++q){
  32. while(opt[p].y<=opt[q].y&&p<=mid) add(opt[p].z,opt[p].w),++p;
  33. ans[opt[q].idx]+=query(opt[q].z);
  34. }
  35. for(int i=l;i<p;++i) add(opt[i].z,-opt[i].w);
  36. }
  37. int main()
  38. {
  39. //setIO("input");
  40. scanf("%d%d",&n,&k);
  41. for(int i=1;i<=n;++i)scanf("%d%d%d",&arr[i].x,&arr[i].y,&arr[i].z);
  42. sort(arr+1,arr+1+n,cmpx);
  43. int u=n,cc=0;
  44. n=0;
  45. for(int i=1;i<=u;++i){
  46. ++cc;
  47. if(arr[i].x!=arr[i+1].x||arr[i].y!=arr[i+1].y||arr[i].z!=arr[i+1].z)
  48. opt[++n]=arr[i],opt[n].w=cc,opt[n].idx=n,cc=0;
  49. }
  50. solve(1,n);
  51. for(int i=1;i<=n;i++)
  52. cnt[ans[opt[i].idx]+opt[i].w-1]+=opt[i].w;
  53. for(int i=0;i<u;++i) printf("%d\n",cnt[i]);
  54. return 0;
  55. }

  

三维偏序(陌上花开) CDQ分治的更多相关文章

  1. BZOJ3262: 陌上花开(三维偏序,CDQ分治)

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美 ...

  2. HDU 5618 Jam's problem again(三维偏序,CDQ分治,树状数组,线段树)

    Jam's problem again Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  3. hdu5618 (三维偏序,cdq分治)

    给定空间中的n个点,问每个点有多少个点小于等于自己. 先来分析简单的二维的情况,那么只要将x坐标排序,那么这样的问题就可以划分为两个子问题,,这样的分治有一个特点,即前一个子问题的解决是独立的,而后一 ...

  4. P3810 陌上花开 CDQ分治

    陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...

  5. 洛谷P3810 陌上花开 CDQ分治(三维偏序)

    好,这是一道三维偏序的模板题 当然没那么简单..... 首先谴责洛谷一下:可怜的陌上花开的题面被无情的消灭了: 这么好听的名字#(滑稽) 那么我们看了题面后就发现:这就是一个三维偏序.只不过ans不加 ...

  6. BZOJ 3262: 陌上花开 [CDQ分治 三维偏序]

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...

  7. 【BZOJ-3262】陌上花开 CDQ分治(3维偏序)

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1439  Solved: 648[Submit][Status][Discuss ...

  8. bzoj3262陌上花开 cdq分治

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2794  Solved: 1250[Submit][Status][Discus ...

  9. N维偏序:cdq分治

    cdq(陈丹琦)分治,是一种类似二分的算法.基本思想同分治: 递归,把大问题划分成若干个结构相同的子问题,直到(L==R): 处理左区间[L,mid]对右区间[mid+1,R]的影响: 合并. 它可以 ...

  10. bzoj3262: 陌上花开(cdq分治+树状数组)

    3262: 陌上花开 题目:传送门 题解: %%%cdq分治 很强大的一个暴力...感觉比分块高级多了 这道题目就是一个十分经典的三维偏序的例题: 一维直接暴力排序x 二维用csq维护y 三维用树状数 ...

随机推荐

  1. ARIMA模型实例讲解——网络流量预测可以使用啊

    ARIMA模型实例讲解:时间序列预测需要多少历史数据? from:https://www.leiphone.com/news/201704/6zgOPEjmlvMpfvaB.html   雷锋网按:本 ...

  2. Linux就该这么学 20181005(第七章磁盘管理)

    参考链接https://www.linuxprobe.com lsblk检测硬盘使用情况 RAID 技术把多块物理硬盘设备(至少两块)通过硬件或软件的方式串联在一起,组成一个大的卷组,并将数据依次写入 ...

  3. BZOJ 2045 容斥原理

    思路: 同BZOJ 2005 http://blog.csdn.net/qq_31785871/article/details/54314774 //By SiriusRen #include < ...

  4. Re:从0开始的微服务架构:(一)重识微服务架构--转

    原文地址:http://www.infoq.com/cn/articles/micro-service-architecture-from-zero?utm_source=infoq&utm_ ...

  5. 人生苦短,请用 Chrome!

    在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...

  6. springmvc_learn

    https://blog.csdn.net/qq598535550/article/details/51703190 https://github.com/wosyingjun/beauty_ssm

  7. SP10628 COT - Count on a tree 主席树

    Code: #include<cstdio> #include<cstring> #include<algorithm> #include<string> ...

  8. NOIp2018模拟赛四十四

    加量不加价?! 昨晚看时间变成了3.5h以为终于变成了正常难度,结果还是国家集训队作业... A题看起来很神仙,B题看上去很神仙,C题一看就知道很神仙: 结果发现B是假题,放榜后发现A也是假题,C是Y ...

  9. JS脚本代替人工输入

    最近接到了个任务,对某个网页上的1000个item填写相同的text,text的内容相同. 这显然是机械动作呀,干脆写个工具,用脚本代替人工操作. 浏览器按F12,找到console,输入写好的脚本, ...

  10. sqlmap 实战漏洞平台dvwa进行密码破解

    2016-05-24 (1)实验的具体的环境极其思路 首先我们要检测我们的漏洞平台是否有sql注入 ,进行简单的测试发现在用户userid 上存在注入的漏洞 使用抓包工具对其cookie 进行获取如下 ...