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

 #include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std; const int D=3e6;
char in[D],*I=in,out[D],*O=out; inline int gint(){
int x=;for(;*I<||*I>;++I);
for(;*I>&&*I<;++I)x=*x+*I-;
return x;
} inline void print(int x){
char tmp[],*t=tmp;
if(!x)*t++=;
for(;x;x/=)*t++=x%+;
for(;t--!=tmp;*O++=*t);
*O++='\n';
} const int Maxn= + ;
int C[Maxn*],ans[Maxn],N,K,n=;
struct Node{
int a,b,c,s,ans;
inline bool operator==(const Node&rhs)const{
return a==rhs.a&&b==rhs.b&&c==rhs.c;
}
inline bool operator!=(const Node&rhs)const{
return !(*this==rhs);
}
void init(){a=gint(),b=gint(),c=gint();}
}p[Maxn],q[Maxn]; inline void Add(int x,const int&y){
for(;<x&&x<=K;x+=x&-x)C[x]+=y;
}
inline int Query(int x){
int ret=;
for(;<x&&x<=K;x-=x&-x)ret+=C[x];
return ret;
}
inline bool cmp1(const Node&x,const Node&y){
if(x.a!=y.a)return x.a<y.a;
if(x.b!=y.b)return x.b<y.b;
return x.c<y.c;
}
inline bool cmp2(const Node&x,const Node&y){
if(x.b!=y.b)return x.b<y.b;
return x.c<y.c;
}
void CDQ(int l,int r){
if(l==r)return;
int mid=(l+r)>>;
CDQ(l,mid);CDQ(mid+,r); int i=l;
for(int j=mid+;j<=r;j++){
for(;i<=mid&&p[i].b<=p[j].b;i++)
Add(p[i].c,p[i].s);
p[j].ans+=Query(p[j].c);
}
for(int j=l;j<i;j++)Add(p[j].c,-p[j].s);
merge(p+l,p+mid+,p+mid+,p+r+,q,cmp2);
memcpy(p+l,q,sizeof(p[])*(r-l+));
}
void init(){
N=gint(),K=gint();
for(int i=;i<=N;i++)q[i].init();
sort(q+,q+N+,cmp1);
for(int cnt=,i=;i<=N;i++,cnt++){
if(q[i]!=q[i+]){p[++n]=q[i];p[n].s=cnt;cnt=;}
}
}
int main(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout); fread(I,,D,stdin); init();
CDQ(,n); for(int i=;i<=n;i++)ans[p[i].ans+p[i].s-]+=p[i].s;
for(int i=;i<N;i++)print(ans[i]); *--O=; return puts(out),;
}

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. leetcode中一些要用到动态规划的题目

    需要仔细回顾的题目: 1.Interleaving String   交叉存取字符串 2.Decode Ways   字符串解码 3.Subsets   Subsets II          求一个 ...

  2. 『重构--改善既有代码的设计』读书笔记----Change Reference to Value

    如果你有一个引用对象,很小且不可改变,而且不易管理,你就需要考虑将他改为一个值对象.在Change Value to Reference我们说过,要在引用对象和值对象之间做选择,有时候并不容易,有了重 ...

  3. [转]显示文件命令:cat、more、less、tail、touch详解

    cat命令cat命令连接文件并打印到标准输出设备上.cat经常用来显示文件的内容,类似于下的type命令. 一般格式:cat [选项] 文件说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取 ...

  4. Android 中 View移动总结:ViewDragHelper学习及用法详解

    如上图简单呈现出两个方块后,提出一个需求: 1.拖动方块时,方块(即子View)可以跟随手指移动. 2.一个方块移动时,另一个方块可以跟随移动. 3.将方块移动到左边区域(右边区域)后放开(即手指离开 ...

  5. jQuery提供的小方法

    jQuery提供的小方法: 1.选择器 + 事件 + 函数 = 复杂的交互 2.循环处理与选择器匹配的各个元素:each() $("#").each(function(){     ...

  6. input 表单点击消失离开出现

    效果1: <input type="text" name="textfield" value="这里是提示内容" onclick=&q ...

  7. windows下面composer安装yii2

    1,安装composer "https://getcomposer.org/Composer-Setup.exe" 2,安装 composer-asset-plugin ,打开cm ...

  8. Android 网络通信 HTTP

    摘要 1. Http GET 方法访问网站 2. Http POST访问网站 3. HttpClient进行Get方式通信 4. HttpClient进行Post方式通信 -------------- ...

  9. paramiko模块实现堡垒机

    通过SSHClient 执行命令 """通过用户名密码验证""" import paramiko # 创建 SSH 对象 ssh = par ...

  10. 最近Get到的一些HTML/CSS中的小点(一)

    1.<em>和<strong>标签都是用来强调一段话中的某几个文字.<em>默认斜体,<strong>默认粗体.在强调语气上<strong> ...