大早上的做了一道三维数点一道五位数点,神清气爽!

先给一维排序,变成一个奇怪的动态的二维数点(相当于有一个扫描面扫过去,导致一系列的加点和询问)

然后cdq分治,再变回静态,考虑前半段对后半段的影响

这时对第二维排序,又变成动态一维数点

树状数组屠之

(不妨再cdq一次变成零维数点,也就是询问一个询问之前有几次修改)(手动滑稽)

另外因为x y z都相同时互相产生影响,特判掉

来上个又臭又长的代码

 #include <bits/stdc++.h>
using namespace std;
struct t
{
int x,y,z,num,ans;
} a[],b[];
int tr[],ans[];
int n,m;
bool comx(t a,t b)
{
return (a.x<b.x)||(a.x==b.x &&(a.y<b.y || (a.y==b.y &&a.z<b.z)));
}
bool same(t a,t b)
{
return (a.x==b.x && a.y==b.y && a.z==b.z);
}
void add(int x,int y)
{
while(x<=m)
tr[x]+=y,x+=x&-x;
}
int que(int x)
{
int ans=;
while(x)
ans+=tr[x],x-=x&-x;
return ans;
}
void cdq(int l,int r)
{
if(l==r)
return;
int mid=l+r>>;
cdq(l,mid);cdq(mid+,r);
for(int i=l,j=l,k=mid+;i<=r;i++)
if(j<=mid &&(k>r || a[j].y<=a[k].y)) b[i]=a[j++];
else b[i]=a[k++];
for(int i=l;i<=r;i++)
{
a[i]=b[i];
if(a[i].num<=mid)
add(a[i].z,);
else
a[i].ans+=que(a[i].z);
}
for(int i=l;i<=r;i++)
if(a[i].num<=mid)
add(a[i].z,-);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
sort(a+,a+n+,comx);
t tem;int te=;
for(int i=n;i>=;i--)
if(same(tem,a[i])) a[i].ans+=te,++te;
else tem=a[i],te=;
// puts("");
// for(int i=1;i<=n;i++)
// printf("%d %d %d\n",a[i].x,a[i].y,a[i].z);
for(int i=;i<=n;i++)
a[i].num=i;
cdq(,n);
// for(int i=1;i<=n;i++)
// printf("%d %d %d %d\n",a[i].x,a[i].y,a[i].z,a[i].ans);
for(int i=;i<=n;i++)
++ans[a[i].ans];
for(int i=;i<n;i++)
printf("%d\n",ans[i]);
return ;
}

bzoj3262陌上花开 三维数点 cdq+树状数组的更多相关文章

  1. BZOJ 3262 陌上花开 (三维偏序CDQ+树状数组)

    题目大意: 题面传送门 三维偏序裸题 首先,把三元组关于$a_{i}$排序 然后开始$CDQ$分治,回溯后按$b_{i}$排序 现在要处理左侧对右侧的影响了,显然现在左侧三元组的$a_{i}$都小于等 ...

  2. BZOJ 2716/2648 SJY摆棋子 (三维偏序CDQ+树状数组)

    题目大意: 洛谷传送门 这明明是一道KD-Tree,CDQ分治是TLE的做法 化简式子,$|x1-x2|-|y1-y2|=(x1+y1)-(x2+y2)$ 而$CDQ$分治只能解决$x1 \leq x ...

  3. BZOJ 1176/2683 Mokia (三维偏序CDQ+树状数组)

    题目大意: 洛谷传送门 三维偏序裸题.. 每次操作都看成一个三元组$<x,y,t>$,表示$x,y$坐标和操作时间$t $ 询问操作拆成$4$个容斥 接下来就是$CDQ$了,外层按t排序, ...

  4. BZOJ 2141 排队 (三维偏序CDQ+树状数组)

    题目大意:略 洛谷传送门 和 [CQOI2015]动态逆序对 这道题一样的思路 一开始的序列视为$n$次插入操作 把每次交换操作看成四次操作,删除$x$,删除$y$,加入$x$,加入$y$ 把每次操作 ...

  5. BZOJ 3295 [CQOI2011]动态逆序对 (三维偏序CDQ+树状数组)

    题目大意: 题面传送门 还是一道三维偏序题 每次操作都可以看成这样一个三元组 $<x,w,t>$ ,操作的位置,权值,修改时间 一开始的序列看成n次插入操作 我们先求出不删除时的逆序对总数 ...

  6. 洛谷P3810-陌上开花(三维偏序, CDQ, 树状数组)

    链接: https://www.luogu.org/problem/P3810#submit 题意: 一个元素三个属性, x, y, z, 给定求f(b) = {ax <= bx, ay < ...

  7. bzoj3295 [Cqoi2011]动态逆序对 cdq+树状数组

    [bzoj3295][Cqoi2011]动态逆序对 2014年6月17日4,7954 Description 对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数. ...

  8. bzoj3262: 陌上花开(CDQ+树状数组处理三维偏序问题)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 题目大意:中文题目 具体思路:CDQ可以处理的问题,一共有三维空间,对于第一维我们 ...

  9. bzoj 3295 动态逆序对 (三维偏序,CDQ+树状数组)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3295 思路: 可以将这道题看成倒着插入,这样就可以转化成求逆序对数,用CDQ分治降维,正反用 ...

随机推荐

  1. Java常用函数式接口--Consumer接口andThen()方法使用案例(二)

    Java常用函数式接口--Consumer接口使用案例

  2. java初探之初始化

    首先明确,变量初始化是在任何方法(包括构造器)被调用之前进行的. 1.实例变量的初始化 实例变量只有当它所属的类实例化后才会存在,构造器被执行就意味着对象就被创建. 1.1.指定初始化. class ...

  3. (三)我的JavaScript系列:不同调用方式的this指向

    人生自是有情痴,此恨不关风与月 今天所写的内容,是对之前的内容的总结和扩展.老实说,对于自己之前的一些杜撰和臆测,我并不是很满意.所以这篇博文,我希望能来点干货. 不同调用方式的this指向 在Jav ...

  4. Python3+Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记13(js操作应用:弹出框无效如何处理)'''from sel ...

  5. Python+Selenium之断言对应的元素是否获取以及基础知识回顾

    # coding=utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.maximize_window () ...

  6. json格式引起的 parse 报错

    json格式: {"ID":"4","PICDATAS":"[{"picDevNo": 1},{"p ...

  7. ActiveX、OLE和COM/DCOM

    ActiveX:开放的集成平台 为开发人员. 用户和 Web生产商提供了一个快速而简便的在 Internet 和 Intranet 创建程序集成和内容的方法(就是提供了一个方法). 使用 Active ...

  8. BZOJ 3232: 圈地游戏 分数规划+判负环

    3232: 圈地游戏 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 966  Solved: 466[Submit][Status][Discuss] ...

  9. codeforce Gym 100418K Cards (概率,数学)

    题意:麦田的故事,n张牌,取x张牌,记住前x张牌最大的值m,继续往后取,遇到第一张比m大的牌就停下来.求一个x使得最后的牌在整副牌里是最大的期望最大. 假设最大的牌是A,A在各种位置出现的概率就是相等 ...

  10. CPP-网络/通信:gsoap 的教程和使用

    1.1.1     gSOAP 1.1.1 .1      简介 gSOAP 编译工具提供了一个 SOAP/XML 关于 C/C++ 语言的实现,从而让 C/C++ 语言研发 web 服务或客户端程式 ...