= =原来复杂度还是nlog^2(n) Orz 被喷了

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<algorithm>
  4. #include<cstring>
  5. #include<iostream>
  6. using namespace std;
  7.  
  8. const int D=3e6;
  9. char in[D],*I=in,out[D],*O=out;
  10.  
  11. inline int gint(){
  12. int x=;for(;*I<||*I>;++I);
  13. for(;*I>&&*I<;++I)x=*x+*I-;
  14. return x;
  15. }
  16.  
  17. inline void print(int x){
  18. char tmp[],*t=tmp;
  19. if(!x)*t++=;
  20. for(;x;x/=)*t++=x%+;
  21. for(;t--!=tmp;*O++=*t);
  22. *O++='\n';
  23. }
  24.  
  25. const int Maxn= + ;
  26. int C[Maxn*],ans[Maxn],N,K,n=;
  27. struct Node{
  28. int a,b,c,s,ans;
  29. inline bool operator==(const Node&rhs)const{
  30. return a==rhs.a&&b==rhs.b&&c==rhs.c;
  31. }
  32. inline bool operator!=(const Node&rhs)const{
  33. return !(*this==rhs);
  34. }
  35. void init(){a=gint(),b=gint(),c=gint();}
  36. }p[Maxn],q[Maxn];
  37.  
  38. inline void Add(int x,const int&y){
  39. for(;<x&&x<=K;x+=x&-x)C[x]+=y;
  40. }
  41. inline int Query(int x){
  42. int ret=;
  43. for(;<x&&x<=K;x-=x&-x)ret+=C[x];
  44. return ret;
  45. }
  46. inline bool cmp1(const Node&x,const Node&y){
  47. if(x.a!=y.a)return x.a<y.a;
  48. if(x.b!=y.b)return x.b<y.b;
  49. return x.c<y.c;
  50. }
  51. inline bool cmp2(const Node&x,const Node&y){
  52. if(x.b!=y.b)return x.b<y.b;
  53. return x.c<y.c;
  54. }
  55. void CDQ(int l,int r){
  56. if(l==r)return;
  57. int mid=(l+r)>>;
  58. CDQ(l,mid);CDQ(mid+,r);
  59.  
  60. int i=l;
  61. for(int j=mid+;j<=r;j++){
  62. for(;i<=mid&&p[i].b<=p[j].b;i++)
  63. Add(p[i].c,p[i].s);
  64. p[j].ans+=Query(p[j].c);
  65. }
  66. for(int j=l;j<i;j++)Add(p[j].c,-p[j].s);
  67. merge(p+l,p+mid+,p+mid+,p+r+,q,cmp2);
  68. memcpy(p+l,q,sizeof(p[])*(r-l+));
  69. }
  70. void init(){
  71. N=gint(),K=gint();
  72. for(int i=;i<=N;i++)q[i].init();
  73. sort(q+,q+N+,cmp1);
  74. for(int cnt=,i=;i<=N;i++,cnt++){
  75. if(q[i]!=q[i+]){p[++n]=q[i];p[n].s=cnt;cnt=;}
  76. }
  77. }
  78. int main(){
  79. freopen("in.txt","r",stdin);
  80. freopen("out.txt","w",stdout);
  81.  
  82. fread(I,,D,stdin);
  83.  
  84. init();
  85. CDQ(,n);
  86.  
  87. for(int i=;i<=n;i++)ans[p[i].ans+p[i].s-]+=p[i].s;
  88. for(int i=;i<N;i++)print(ans[i]);
  89.  
  90. *--O=;
  91.  
  92. return puts(out),;
  93. }

BZOJ 3262 陌上花开 CDQ分治的更多相关文章

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

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

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

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

  3. BZOJ 3262 陌上花开 ——CDQ分治

    [题目分析] 多维问题,我们可以按照其中一维排序,然后把这一维抽象的改为时间. 然后剩下两维,就像简单题那样,排序一维,树状数组一维,按照时间分治即可. 挺有套路的一种算法. 时间的抽象很巧妙. 同种 ...

  4. BZOJ 3262: 陌上花开 (cdq分治,三维偏序)

    #include <iostream> #include <stdio.h> #include <algorithm> using namespace std; c ...

  5. BZOJ 3262: 陌上花开 CDQ

    这个题大部分人用了离散然后水之,然而.....作为一只蒟蒻我并没有想到离散,而是直接拿两个区间一个对应n,一个对应k来搞,当然这两个区间是对应的,我把第一维排序,第二维CDQ,第三维树状数组,然而由于 ...

  6. [BZOJ 3456]城市规划(cdq分治+FFT)

    [BZOJ 3456]城市规划(cdq分治+FFT) 题面 求有标号n个点无向连通图数目. 分析 设\(f(i)\)表示\(i\)个点组成的无向连通图数量,\(g(i)\)表示\(i\)个点的图的数量 ...

  7. [BZOJ 2989]数列(CDQ 分治+曼哈顿距离与切比雪夫距离的转化)

    [BZOJ 2989]数列(CDQ 分治) 题面 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]| ...

  8. P3810 陌上花开 CDQ分治

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

  9. Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治

    Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...

随机推荐

  1. new、delete用法(一)

    第一部分:new的使用: #define DEBUG_NEW new(THIS_FILE, __LINE__)解释 THIS_FILE:表示当前类所处的文件名: __LINE__:表示分配内存操作所在 ...

  2. js设计模式--鸭子类型

    1.简介 JavaScript没有提供传统面向对象语言的类式继承通过原型委托的形式实现对象与对象之间的继承没有对抽象类和接口的支持 编程语言按数据类型可分为静态类型语言和动态类型语言 变量的类型要到程 ...

  3. 关于js的callback回调函数的理解

    回调函数的处理逻辑理解:所谓的回调函数处理逻辑,其实就是先将回调函数的代码 冻结(或者理解为闲置),接着将这个回调函数的代码放到回调函数管理器的队列里面. 待回调函数被触发调用的时候,对应的回调函数的 ...

  4. Colletion View 简单的备忘

    UIColletionView 这篇只是做UIColletionView的常用属性.代理方法和数据源方法的备忘,之后做一些自定义布局,增加删除动画等. UIColletionViewFlowLayou ...

  5. JS获取终端屏幕、浏览窗口的相关信息

    查看终端屏幕相关信息,在windows系统的控制面板可以查到分辨率且可以设置,更具体的浏览器可视窗口等信息则需要借助其他工具.而在程序里需要动态获取时该怎么做呢? 琢磨的一个js方法,供大家参考.如下 ...

  6. [BZOJ - 2631] tree 【LCT】

    题目链接:BZOJ - 2631 题目分析 LCT,像线段树区间乘,区间加那样打标记. 这道题我调了一下午. 提交之后TLE了,我一直以为是写错了导致了死循环. 于是一直在排查错误.直到.. 直到我看 ...

  7. [BZOJ 2127] happiness 【最小割】

    题目链接:BZOJ - 2127 题目分析 首先,每个人要么学文科,要么学理科,所以可以想到是一个最小割模型. 我们就确定一个人如果和 S 相连就是学文,如果和 T 相连就是学理. 那么我们再来确定建 ...

  8. office web apps

    http://technet.microsoft.com/zh-cn/library/ff431687.aspx http://www.cnblogs.com/erucy/archive/2012/0 ...

  9. appFramework在三星某些机型上的兼容问题

    有个问题困扰了安卓哥好几天 一个带有fixed抬头的列表页,在向上swipe的时候,有一定概率会把整个画面滚动上去,就连fixed的部分也移动了. 于是哥觉得是webview的问题,找了各种选项,禁用 ...

  10. Fibonacci Tree

    hdu4786:http://acm.hdu.edu.cn/showproblem.php?pid=4786 题意:给你一个无向图,然后其中有的边是白色的有的边是黑色的.然后问你是否存在一棵生成树,在 ...