题目链接:hdu_5618_Jam's problem again

题意:

给你n个点,每个点有一个坐标(x,y,z),找出有ans个点,3个坐标都比该点小,这个点的level就为ans,然后让你输出所有点的ans.

题解:

对于第一维,直接排序,后面两维的处理可以用线段树套lowbit,但空间用的很大,这里满足运用cdq分治的条件,所有用cdq分治套lowbit,常数很小。

注意相同点的处理。

 #include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std; const int N=1e5+;
int t,n,sum[N]; struct node
{
int x,y,z,cnt,id;
bool operator < (const node &b)const
{
if(x==b.x&&y==b.y)return z<b.z;
if(x==b.x)return y<b.y;
return x<b.x;
}
bool operator == (const node &b)const{return x==b.x&&y==b.y&&z==b.z;}
}a[N],b[N]; bool cmp(node a,node b){return a.id<b.id;} inline void add(int x,int c){while(x<N)sum[x]+=c,x+=x&-x;}
inline int ask(int x){int an=;while(x)an+=sum[x],x-=x&-x;return an;} void solve(int l,int r)
{
if(l==r)return;
int mid=l+r>>;
solve(l,mid),solve(mid+,r);
for(int i=l,j=l,k=mid+;i<=r;i++)
{
if((a[j].y<=a[k].y||r<k)&&j<=mid)b[i]=a[j++],add(b[i].z,);
else b[i]=a[k++],b[i].cnt+=ask(b[i].z);
}//当左半边的y大于当前右半边的y时,先将这个点更新了,这样就保证了前面的y都是比这个点小
F(i,l,mid)add(a[i].z,-),a[i]=b[i];
F(i,mid+,r)a[i]=b[i];
} int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
F(i,,n)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
a[i].id=i,a[i].cnt=;
}
sort(a+,a++n);
for(int i=n-;i>;i--)if(a[i]==a[i+])a[i].cnt=a[i+].cnt+;
solve(,n);
sort(a+,a++n,cmp);
F(i,,n)printf("%d\n",a[i].cnt);
}
return ;
}

hdu_5618_Jam's problem again(cdq分治+lowbit)的更多相关文章

  1. HDU5618 Jam's problem again CDQ分治

    Jam's problem again CDQ分治 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5618 题意: \[ 有n 个元素,第 i 个元素有 ...

  2. HDU 5618 Jam's problem again CDQ分治 BC ROUND 70

    题意:给你1e5个点(x,y,z),对于每一个点询问有多少个点(x1,y1,z1)满足x1<=x&&y1<=y&&z1<=z 分析:(官方题解奉上)很 ...

  3. HDU 5618 Jam's problem again (cdq分治+BIT 或 树状数组套Treap)

    题意:给n个点,求每一个点的满足 x y z 都小于等于它的其他点的个数. 析:三维的,第一维直接排序就好按下标来,第二维按值来,第三维用数状数组维即可. 代码如下: cdq 分治: #pragma ...

  4. [BZOJ2225][SPOJ2371]LIS2 - Another Longest Increasing Subsequence Problem:CDQ分治+树状数组+DP

    分析 这回试了一下三级标题,不知道效果怎么样? 回到正题,二维最长上升子序列......嗯,我会树套树. 考虑\(CDQ\)分治,算法流程: 先递归进入左子区间. 将左,右子区间按\(x\)排序. 归 ...

  5. SPOJ LIS2 - Another Longest Increasing Subsequence Problem(CDQ分治优化DP)

    题目链接  LIS2 经典的三维偏序问题. 考虑$cdq$分治. 不过这题的顺序应该是 $cdq(l, mid)$ $solve(l, r)$ $cdq(mid+1, r)$ 因为有个$DP$. #i ...

  6. SPOJ LIS2 Another Longest Increasing Subsequence Problem 三维偏序最长链 CDQ分治

    Another Longest Increasing Subsequence Problem Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://a ...

  7. cdq分治(hdu 5618 Jam's problem again[陌上花开]、CQOI 2011 动态逆序对、hdu 4742 Pinball Game、hdu 4456 Crowd、[HEOI2016/TJOI2016]序列、[NOI2007]货币兑换 )

    hdu 5618 Jam's problem again #include <bits/stdc++.h> #define MAXN 100010 using namespace std; ...

  8. HDU 5618 Jam's problem again(三维偏序,CDQ分治,树状数组,线段树)

    Jam's problem again Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  9. bzoj3295: [Cqoi2011]动态逆序对(cdq分治)

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

随机推荐

  1. [DP之树形DP]

    树形dp出了应该还是比计数dp要简单的 因为很好可以看出来 常用的是一个F记录子树内的 一个G记录子树外的 还有一种就是有环的做过要用状压搞一下 不说这么多直接上例题 [HAOI2015]T1 经典的 ...

  2. Amabri添加YDB报错

    点部署直接出现如下图: 通过查看日志: tail -f /var/log/ambari-server/ambari-server.log java.lang.RuntimeException: Una ...

  3. java操作mongodb——更新数据

    Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt(& ...

  4. 移动端 web开发心得

    吐槽:华为p9 内置浏览器就是个渣,各种奇葩的bug,1.如果将一个输入框的最大长度设为4,然后输入4个后,js将输入的值置空,就无法再输入了 手机上浏览器比较蛋疼的是,点击一个输入框,输入法将页面挡 ...

  5. USACO 3.2 Stringsobits

    StringsobitsKim Schrijvers Consider an ordered set S of strings of N (1 <= N <= 31) bits. Bits ...

  6. php error _report

    [error_reporting] => Array   (   [global_value] => 32767   [local_value] => 0   [access] =& ...

  7. 使用rsync无密码传输

    众多数据库服务器的管理过程中,在不同服务器间的文件传输是免不了的.您可以使用scp命令或FTP方法完成文件的发送和接收,这篇文章我将给大家介绍另外一种方法,这就是rsync命令.rsync是文件传输程 ...

  8. [SOJ] 畅通工程续

    Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多 ...

  9. GoogleCodeJam

    2016年没有参赛,在师兄的介绍下,试了一下简单的一题,需要注意的是读写数据的形式还有具体代码. 2016资格赛 A题 Problem Bleatrix Trotter the sheep has d ...

  10. sharepoint:基于AD的FORM认证

    //来源:http://www.cnblogs.com/jindahao/archive/2012/05/07/2487351.html 需求: 1. 认证要基于AD 2. 登入方式要页面的方式(fo ...