题目传送门

思路:cdq分治处理偏序关系的模板题,主要就是学cdq分治吧,还在入门中。

  代码其实也很好理解,记得树状数组操作的上限是 z的最大值,不是n的最大值,这个细节wa了好久。

  1. #include<bits/stdc++.h>
  2. #define CLR(a,b) memset(a,b,sizeof(a))
  3. using namespace std;
  4. typedef long long ll;
  5. const int maxn=;
  6. struct node{
  7. int x,y,z,id;
  8. node(){}
  9. node(int x,int y,int z,int id):x(x),y(y),z(z),id(id){}
  10. }a[maxn],b[maxn];
  11. int ans[maxn],bit[maxn<<],pr[maxn];
  12. int n,k,maxd;
  13. inline void add(int x,int v){
  14. while(x<=maxd){//切记 上限不是n,是z的最大值
  15. bit[x]+=v;
  16. x+= x & -x;
  17. }
  18. }
  19. inline int sum(int x){
  20. int ces=;
  21. while(x>){
  22. ces+=bit[x];
  23. x -= x & -x;
  24. }
  25. return ces;
  26. }
  27. bool cmpall(const node &a,const node &b){
  28. if(a.x!=b.x)return a.x<b.x;
  29. if(a.y!=b.y)return a.y<b.y;
  30. return a.z<b.z;
  31. }
  32. bool cmpy(const node &a,const node &b){
  33. if(a.y!=b.y)return a.y<b.y;
  34. return a.id<b.id;
  35. }
  36. inline void cdq(int l,int r){
  37. if(l==r)return ;
  38. int mid=(l+r)>>;
  39. int cc=;
  40. for(int i=l;i<=mid;i++)
  41. {
  42. b[++cc]=a[i];
  43. b[cc].id=,b[cc].x=;
  44. }
  45. for(int i=mid+;i<=r;i++)
  46. {
  47. b[++cc]=a[i],b[cc].x=;
  48. }
  49. sort(b+,b++cc,cmpy);
  50. for(int i=;i<=cc;i++)
  51. {
  52. if(b[i].id==){
  53. add(b[i].z,);
  54. }else{
  55. ans[b[i].id]+=sum(b[i].z);
  56. }
  57. }
  58. for(int i=;i<=cc;i++)
  59. {
  60. if(b[i].id==)add(b[i].z,-);
  61. }
  62. cdq(l,mid),cdq(mid+,r);
  63. return ;
  64. }
  65. int main(){
  66. cin>>n>>k;
  67. for(int i=;i<=n;i++)
  68. {
  69. scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
  70. maxd=max(maxd,a[i].z);
  71. a[i].id=i;
  72. }
  73. sort(a+,a++n,cmpall);
  74. int cnt=;
  75. for(int i=n;i>=;i--)
  76. {
  77. if(a[i].x==a[i+].x&&a[i].y==a[i+].y&&a[i].z==a[i+].z)
  78. {
  79. cnt++;
  80. }else cnt=;
  81. ans[a[i].id]+=cnt;
  82. }
  83. cdq(,n);
  84. for(int i=;i<=n;i++)
  85. {
  86. pr[ans[i]]++;
  87. }
  88. for(int i=;i<n;i++)
  89. {
  90. printf("%d\n",pr[i]);
  91. }
  92. }

bzoj3262 陌上花开 cdq分治(入门)的更多相关文章

  1. bzoj3262陌上花开 cdq分治入门题

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

  2. 【学术篇】bzoj3262 陌上花开. cdq分治入门

    花儿们已经很累了-- 无论是花形.颜色.还是气味, 都不是为了给人们摆出来欣赏的, 更不是为了当做出题的素材的, 她们并不想自己这些属性被没有生命的数字量化, 并不想和其它的花攀比, 并无意分出个三六 ...

  3. bzoj3262陌上花开 cdq分治

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

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

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

  5. bzoj3262 陌上花开——CDQ分治

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 第一道CDQ分治题! 看博客:https://www.cnblogs.com/Narh ...

  6. BZOJ3262:陌上花开(CDQ分治)

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

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

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

  8. CDQ分治入门 + 例题 Arnooks's Defensive Line [Uva live 5871]

    CDQ分治入门 简介 CDQ分治是一种特别的分治方法,它由CDQ(陈丹琦)神犇于09国家集训队作业中首次提出,因此得名.CDQ分治属于分治的一种.它一般只能处理非强制在线的问题,除此之外这个算法作为某 ...

  9. P3810 陌上花开 CDQ分治

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

随机推荐

  1. c++ 适配器模式(adapter)

    当两个系统的接口不一样时,我们就要重新封装一下接口,以便于当前系统的调用.这种模式叫做适配器模式.适配器模式分为两种: 1.对象组合适配器(Object Adapter) 2.类适配器(Class A ...

  2. 一个小仓鼠的js动画

    直接在网页打开就可以玩了: http://cdn.abowman.com/widgets/hamster/hamster.swf?up_bodyColor=f0e9cc&up_feetColo ...

  3. SpringMVC——拦截器

    Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口 preHandle():这个方法在业务处理 ...

  4. OM—>AR相关会计科目

    业务会计核算 挑库:           借:发出商品 (递延销货成本) 贷:发出商品 (递延销货成本)   发运:           借:发出商品 (递延销货成本) 贷:库存商品/原材料 (库存估 ...

  5. DELPHI XE5 UP2 无真机输出 APP并转换为IPA(实践整理)

    1.在Mac上配置开发环境(具体步骤请百度)   XCODE5.1+IOS7.1SDK+COMMAND LINE TOOLS   安装PlatformAssistant   买一个真机调试账号(实际测 ...

  6. 【C#】CLR内存那点事(string)

    string是比特殊的类,说引用类型,但不存在堆里面,而且String str=new String("HelloWorld")这样的重装也说没有的. 我们先来看一个方法 clas ...

  7. WP REST API: 设置和使用OAuth 1.0a Authentication(原文)

    In the previous part of the series, we set up basic HTTP authentication on the server by installing ...

  8. CentOS 用户/组与权限

    useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户a ...

  9. 一套最全的JavaScript 语言基础知识点总结(思维导图10张)

    1.DOM基础操作 2.数组基础 3.函数基础 4.运算符 5.流程控制语句 6.正则表达式 7.字符串函数 8.数据类型 9.变量 10.window对象

  10. 死磕Java之聊聊LinkedList源码(基于JDK1.8)

    工作快一年了,近期打算研究一下JDK的源码,也就因此有了死磕java系列 LinkedList 是一个继承于AbstractSequentialList的双向链表,链表不需要capacity的设定,它 ...