裸的cdq,注意去重;

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=,maxm=;
int tot,n,k,tr[maxm],h[maxn],t1,t2,len1,len2,ans[maxn];
void add(int pos,int v){
for(int i=pos;i<maxm;i+=i&(-i))
tr[i]+=v;
}
int qs(int pos){
int res=;
for(int i=pos;i;i-=i&(-i))
res+=tr[i];
return res;
}
struct node{
int ls,lc,lm,id,cnt;
}tt[maxn],t[maxn],tmp1[maxn],tmp2[maxn];
int cmp1(node a,node b){
if(a.lm!=b.lm)return a.lm<b.lm;
if(a.lc!=b.lc)return a.lc<b.lc;
return a.ls<b.ls;
}
int cmp2(node a,node b){
if(a.lc!=b.lc)return a.lc<b.lc;
return a.ls<b.ls;
}
void cdq(int l,int r){
if(l==r){
h[t[l].id]+=t[l].cnt-;
return;
}
int mid=l+r>>;
cdq(l,mid);cdq(mid+,r);
t1=t2=;
for(int i=l;i<=mid;++i)tmp1[++t1]=t[i];
for(int i=mid+;i<=r;++i)tmp2[++t2]=t[i];
sort(tmp1+,tmp1+t1+,cmp2);
sort(tmp2+,tmp2+t2+,cmp2);
len1=t1,len2=t2;
t1=t2=;
for(t2=;t2<=len2;++t2){
while(tmp1[t1].lc<=tmp2[t2].lc&&t1<=len1){
add(tmp1[t1].ls,tmp1[t1].cnt);++t1;
}
h[tmp2[t2].id]+=qs(tmp2[t2].ls);
}
for(int i=;i<t1;++i)add(tmp1[i].ls,-tmp1[i].cnt);
}
int main(){
cin>>n>>k;
for(int i=;i<=n;++i){
scanf("%d%d%d",&tt[i].ls,&tt[i].lc,&tt[i].lm);
}
sort(tt+,tt+n+,cmp1);
for(int i=;i<=n;++i){
if(i!=&&tt[i-].lm==tt[i].lm&&tt[i-].ls==tt[i].ls&&tt[i-].lc==tt[i].lc){
t[tot].cnt++;
}
else t[++tot]=tt[i],t[tot].cnt=;
}
for(int i=;i<=tot;++i)t[i].id=i;
cdq(,tot);
for(int i=;i<=tot;++i){
ans[h[i]]+=t[i].cnt;
}
for(int i=;i<n;++i){
printf("%d\n",ans[i]);
}
system("pause");
return ;
}

bzoj3262(cdq分治模板)的更多相关文章

  1. 洛谷 P3810 【模板】三维偏序(陌上花开) (cdq分治模板)

    在solve(L,R)中,需要先分治solve两个子区间,再计算左边区间修改对右边区间询问的贡献. 注意,计算额外的贡献时,两子区间各自内部的顺序变得不再重要(不管怎么样左边区间的都发生在右边之前), ...

  2. CDQ分治模板

    #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #defi ...

  3. [BOI2007]Mokia 摩基亚(CDQ分治)

    upd:\((x1,y1)(x2,y2)\)表示以\((x1,y1)\)为左上端点 \((x2,y2)\)为右下端点的矩形 本来以为是一道二位树状数组的模板,但是看数据范围之后就放弃了,边界既然到了2 ...

  4. P3157 [CQOI2011]动态逆序对 CDQ分治

    一道CDQ分治模板题简单来说,这道题是三维数点对于离线的二维数点,我们再熟悉不过:利用坐标的单调递增性,先按更坐标排序,再按纵坐标排序更新和查询时都直接调用纵坐标.实际上,我们是通过排序将二维中的一维 ...

  5. 洛谷P3810 陌上花开(CDQ分治)

    洛谷P3810 陌上花开 传送门 题解: CDQ分治模板题. 一维排序,二维归并,三维树状数组. 核心思想是分治,即计算左边区间对右边区间的影响. 代码如下: #include <bits/st ...

  6. Educational Codeforces Round 41 967 E. Tufurama (CDQ分治 求 二维点数)

    Educational Codeforces Round 41 (Rated for Div. 2) E. Tufurama (CDQ分治 求 二维点数) time limit per test 2 ...

  7. P3810 陌上花开 CDQ分治

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

  8. [模板] CDQ分治&&BZOJ3262:陌上花开

    简介 CDQ分治是分治的一种, 可以看做归并排序的扩展, 利用离线将一些 \(O(n)\) 的暴力优化到 \(O(log n)\). 它可以用来顶替一些高级(log)数据结构等. 一般地, CDQ分治 ...

  9. 【BZOJ3262】陌上花开(CDQ分治)

    [BZOJ3262]陌上花开(CDQ分治) 题解 原来放过这道题目,题面在这里 树套树的做法也请点上面 这回用CDQ分治做的 其实也很简单, 对于第一维排序之后 显然只有前面的对后面的才会产生贡献 那 ...

随机推荐

  1. 文件操作 day8

    一,文件操作基本流程. 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众 ...

  2. Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools"

    https://blog.csdn.net/saucyj/article/details/79043443

  3. C++中的getline()

    总结: 尽量使用全局函数string类中的getline(),其读入的第二个参数为string类型,不设置默认是遇到回车停止读入操作 cin.getline是针对数组字符串的,以指定的地址为存放第一个 ...

  4. 洛谷1984 [SDOI2008]烧水问题

    一道找规律 原题链接 显然要将烧得的温度最大化利用,即每次都去热传递. 设水沸腾为\(x\). 第一杯直接烧水,需提高\(x\). 第二杯先与第一杯进行热传递,这样只需提高\(\dfrac{x}{2} ...

  5. [都是原创]Php simplexml 添加节点

    Php simplexml 添加节点 原始代码如下 //================<? //创建xml对象$xml = new SimpleXMLElement('<Messages ...

  6. 用户态处理arp、ndisc neighbour solication 报文

    问题背景: 想要协议栈给不是接口ip的报文,ipv4回复arp request,ipv6回复 ndisc solication. #include <stdio.h> //调用该函数成为一 ...

  7. jmeter脚本录制的两种方式

    完成一次完整的性能测试: 1.创建用户: 2.选择协议(HTTP) 3.使用工具去模拟协议操作(1.手工编写(抓包工具):2.工具自带录制) 4.运行工具进行压力测试

  8. 实现SQL express版做自动备份数据库的方法

    SQL Server 2005/2008 Express版没有代理组件,不支持维护计划.可以采用下面的办法实现每日备份: 一.在要备份的数据库中创建存储过程. 存储过程名称:sp_BackupData ...

  9. Hbase常用操作(增删改查)

    Hbase常用操作(增删改查) [日期:2014-01-03] 来源:Linux社区  作者:net19880504 [字体:大 中 小]     运行Eclipse,创建一个新的Java工程“HBa ...

  10. (转贴)fusionCharts属性参考API

    一.FusionCharts的分类 关于FusionCharts的基本介绍我就不在这里浪费篇幅了,想了解的朋友自己去www.baigoogedu.com里面找吧.我就说说FusionCharts的官方 ...