3262: 陌上花开

题目:传送门


题解:

   %%%cdq分治

   很强大的一个暴力...感觉比分块高级多了

   这道题目就是一个十分经典的三维偏序的例题:

   一维直接暴力排序x

   二维用csq维护y

  三维用树状数组来搞

   最后ans处理答案,注意:全部值相等,相互之间也算自己更加漂亮


代码:

  1. #include<cstdio>
  2. #include<cstring>
  3. #include<cstdlib>
  4. #include<cmath>
  5. #include<algorithm>
  6. using namespace std;
  7. struct flower
  8. {
  9. int x,y,z,f,tot;
  10. }a[],ba[];int n,m,len;
  11. void ins(int x,int y,int z)
  12. {
  13. len++;
  14. a[len].x=x;a[len].y=y;a[len].z=z;
  15. a[len].tot=;a[len].f=;
  16. }
  17. bool cmp(flower n1,flower n2)
  18. {
  19. if(n1.x!=n2.x)return n1.x<n2.x;
  20. if(n1.y!=n2.y)return n1.y<n2.y;
  21. return n1.z<n2.z;
  22. }
  23. void qtt()
  24. {
  25. int x,y,z;
  26. for(int i=;i<=n;i++)
  27. scanf("%d%d%d",&x,&y,&z),ins(x,y,z);
  28. sort(a+,a+len+,cmp);
  29. n=;
  30. for(int i=;i<=len;i++)
  31. if(a[n].x==a[i].x && a[n].y==a[i].y && a[n].z==a[i].z)
  32. a[n].tot++;
  33. else
  34. a[++n]=a[i];
  35. }
  36.  
  37. int s[];
  38. int lowbit(int x){return x&-x;}
  39. void add(int x,int k)
  40. {
  41. while(x<=m)
  42. {
  43. s[x]+=k;
  44. x+=lowbit(x);
  45. }
  46. }
  47. int getsum(int x)
  48. {
  49. int ans=;
  50. while(x)
  51. {
  52. ans+=s[x];
  53. x-=lowbit(x);
  54. }
  55. return ans;
  56. }
  57.  
  58. void cdq(int l,int r)
  59. {
  60. if(l==r)return ;
  61. int mid=(l+r)/;
  62. cdq(l,mid);cdq(mid+,r);
  63.  
  64. int i=l,j=mid+,p=l;
  65. while(i<=mid && j<=r)
  66. {
  67. if(a[i].y<=a[j].y)add(a[i].z,a[i].tot),ba[p++]=a[i++];
  68. else a[j].f+=getsum(a[j].z),ba[p++]=a[j++];
  69. }
  70. while(i<=mid)add(a[i].z,a[i].tot),ba[p++]=a[i++];
  71. while(j<=r)a[j].f+=getsum(a[j].z),ba[p++]=a[j++];
  72.  
  73. for(int i=l;i<=mid;i++)add(a[i].z,-a[i].tot);
  74.  
  75. for(int i=l;i<=r;i++)a[i]=ba[i];
  76. }
  77. int ans[];
  78. int main()
  79. {
  80. scanf("%d%d",&n,&m);
  81. qtt();
  82.  
  83. memset(s,,sizeof(s));
  84. cdq(,n);
  85.  
  86. memset(ans,,sizeof(ans));
  87. for(int i=;i<=n;i++)ans[a[i].f+a[i].tot-]+=a[i].tot;
  88. for(int i=;i<len;i++)printf("%d\n",ans[i]);
  89. return ;
  90. }

bzoj3262: 陌上花开(cdq分治+树状数组)的更多相关文章

  1. [Bzoj3262]陌上花开(CDQ分治&&树状数组||树套树)

    题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 #include<bits/stdc++.h> using nam ...

  2. 【bzoj3262】陌上花开 CDQ分治+树状数组

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

  3. bzoj 3262 陌上花开 - CDQ分治 - 树状数组

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

  4. BZOJ_3262_陌上花开_CDQ分治+树状数组

    BZOJ_3262_陌上花开_CDQ分治+树状数组 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的 ...

  5. 【BZOJ4553】[Tjoi2016&Heoi2016]序列 cdq分治+树状数组

    [BZOJ4553][Tjoi2016&Heoi2016]序列 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能 ...

  6. BZOJ 1176 Mokia CDQ分治+树状数组

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 821[Submit][St ...

  7. 【bzoj2225】[Spoj 2371]Another Longest Increasing CDQ分治+树状数组

    题目描述 给定N个数对(xi, yi),求最长上升子序列的长度.上升序列定义为{(xi, yi)}满足对i<j有xi<xj且yi<yj. 样例输入 8 1 3 3 2 1 1 4 5 ...

  8. BZOJ 2683 简单题 cdq分治+树状数组

    题意:链接 **方法:**cdq分治+树状数组 解析: 首先对于这道题,看了范围之后.二维的数据结构是显然不能过的.于是我们可能会考虑把一维排序之后还有一位上数据结构什么的,然而cdq分治却可以非常好 ...

  9. LOJ3146 APIO2019路灯(cdq分治+树状数组)

    每个时刻都形成若干段满足段内任意两点可达.将其视为若干正方形.则查询相当于求历史上某点被正方形包含的时刻数量.并且注意到每个时刻只有O(1)个正方形出现或消失,那么求出每个矩形的出现时间和消失时间,就 ...

随机推荐

  1. bzoj1786: [Ahoi2008]Pair 配对&&1831: [AHOI2008]逆序对

    一个自以为很对的东西,我们往-1放的数肯定是不增的. 然后就预处理一下,假如i这个位置放j会多多少逆序对. DP一下,我的复杂度应该是O(n*m^2)的,然而你随便搞都能省掉一个m吧,我算了算好像可以 ...

  2. IPK僵尸网络 看看其传播手法

    转自:http://www.freebuf.com/vuls/154975.html 一.IPK僵尸网络概述 IPK僵尸家族是自2012年底就开始出现并长期持续活跃在境外的DDoS僵尸网络.2016年 ...

  3. c:forTokens标签delims截取字符

    转自:https://blog.csdn.net/love398146779/article/details/83853958 两个name要相同,在里边内容为空的时候才会全显示. <logic ...

  4. Spark Streaming概念学习系列之Spark Streaming的竞争对手

    不多说,直接上干货! Spark Streaming的竞争对手 Storm 在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology).这个拓扑将会被提交给集群,由集群中的 ...

  5. 深入了解React组件重新渲染的条件和生命周期

    React组件rerender的真正条件 当前组件的State中的属性改变时且当前组件的shouldcomponentupdate返回true,那么当前组件会rerender 组件的props中的任一 ...

  6. javaweb 之 工具类UUIDUtils

    借用一下百度百科的解释,来看一下UUID是什么. UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Ope ...

  7. Win7下安装Flash低版本

    我把HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\SafeVersions中高于要装的版本的项目都删了,还是不行. 看了这个帖子后发现,原来64 ...

  8. ZBrush中如何清除遮罩

    在之前的学习中我们知道在ZBrush®中如何创建遮罩,在创建遮罩时怎样进行反转来选择反选遮罩,本文将详细讲解ZBrush中如何清除遮罩,当我们利用遮罩达到预期效果时就需要将遮罩清除了:或者在做了遮罩的 ...

  9. hibernate---crateria

    Leslie 趁还没忘掉,赶快记录下来 Hibernate中Criteria的完整用法 转自:http://www.360doc.com/content/090313/10/26262_2794855 ...

  10. 工作需求——VBA操作打印机

    因为最近做的事情比较多,平时也多用EXCEL,所以顺便学习EXCEL的功能性的东西 转载:https://msdn.microsoft.com/zh-tw/vba/excel-vba/articles ...