题意:给你一些三维上的点,对于每个点,统计三个坐标都小于等于该点的点数。

如果点的范围在300以内,可以用三维树状数组搞,但这题坐标范围太大。

考虑将所有点按照x坐标排序,从左到右,相当于在一个二维平面上插入点,并询问某个点左下方的点数,而后者可以按时间分治,在O(nloglog)复杂度内搞定。(其实可以把x轴看成时间轴)

注意相同点的处理。

(感觉对时间分治就是:将左区间和右区间的修改对其后面的询问的贡献处理掉,合并时就只有左区间的修改和右区间的询问,这就达到了以一个log的复杂度将"修改 询问 修改 修改 询问...”的问题变成了“修改 修改 修改 询问 询问”)

 #include <cstdio>
#include <algorithm>
#define N 100010
#define K 200010
using namespace std; struct Trid {
int x, y, z;
int cnt;
int xx;
Trid(){}
Trid( int x, int y, int z ):x(x),y(y),z(z),cnt(),xx(x){}
bool operator==( const Trid & o ) const {
return x==o.x && y==o.y && z==o.z;
}
bool operator<( const Trid &b ) const {
if( x!=b.x ) return x<b.x;
if( y!=b.y ) return y<b.y;
return z<b.z;
}
}; int n, k;
Trid trid[N];
int bit[K];
int ans[N]; void modify( int pos, int v ) {
for( int i=pos; i<=k; i+=i&-i )
bit[i] += v;
}
int query( int pos ) {
int rt=;
for( int i=pos; i; i-=i&-i )
rt += bit[i];
return rt;
}
bool cmp_yzx( const Trid &a, const Trid &b ) {
if( a.y!=b.y ) return a.y<b.y;
if( a.z!=b.z ) return a.z<b.z;
return a.x<b.x;
}
void cdq( int lf, int rg ) {
if( lf==rg ) return;
int mid=(lf+rg)>>;
cdq(lf,mid);
cdq(mid+,rg);
sort( trid+lf, trid+rg+, cmp_yzx );
for( int i=lf; i<=rg; i++ ) {
if( trid[i].x<=mid )
modify( trid[i].z, + );
if( trid[i].x>mid )
trid[i].cnt += query( trid[i].z );
}
for( int i=lf; i<=rg; i++ )
if( trid[i].x<=mid )
modify( trid[i].z, - );
}
int main() {
scanf( "%d%d", &n, &k );
for( int i=,x,y,z; i<=n; i++ ) {
scanf( "%d%d%d", &x, &y, &z );
trid[i] = Trid( x, y, z );
}
sort( trid+, trid++n );
for( int i=,j; i<=n; i++ ) {
for( j=i; j<=n && trid[j]==trid[i]; j++ );
for( int k=i; k<j; k++ )
trid[k].cnt += j-k-;
i = j-;
}
for( int i=; i<=n; i++ )
trid[i].x = i;
cdq( , n );
for( int i=; i<=n; i++ ) {
ans[trid[i].cnt]++;
}
for( int i=; i<n; i++ )
printf( "%d\n", ans[i] );
}

bzoj 3262的更多相关文章

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

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

  2. BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)

    题目链接 BZOJ3262 洛谷P3810 /* 5904kb 872ms 对于相邻x,y,z相同的元素要进行去重,并记录次数算入贡献(它们之间产生的答案是一样的,但不去重会..) */ #inclu ...

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

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

  4. 【BZOJ 3262】 3262: 陌上花开 (CDQ分治)

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

  5. [BZOJ 3262]陌上开花

    今天写了到偏序问题,发现博主真的是个傻X 传送门 以前的写法 /************************************************************** Probl ...

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

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

  7. bzoj 3262 陌上花开

    本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护. 把三维相等的合并到一个里面. #include<iostream> #include<cstdio ...

  8. BZOJ 3262 陌上花开 CDQ分治

    = =原来复杂度还是nlog^2(n) Orz 被喷了 #include<cstdio> #include<cstdlib> #include<algorithm> ...

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

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

  10. 【刷题】BZOJ 3262 [HNOI2008]GT考试

    Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0< ...

随机推荐

  1. Linux USB驱动框架分析(2)【转】

    转自:http://blog.chinaunix.net/uid-23046336-id-3243543.html   看了http://blog.chinaunix.net/uid-11848011 ...

  2. oracle用plsql查询死锁

    1. 点击plsql 工具(tool),点击会话(session) 2.点击锁,可以看到锁的session

  3. 试用Redis

    Windows 10家庭中文版,运行于VirtualBox上的Ubuntu 18.04,Redis 4.0.10, Redis,久仰大名!因为没有从事互联网行业,所以一直没有使用过.近期找工作,也隐约 ...

  4. 浅谈js设计模式之策略模式

    策略模式有着广泛的应用.本节我们就以年终奖的计算为例进行介绍. 很多公司的年终奖是根据员工的工资基数和年底绩效情况来发放的.例如,绩效为 S的人年终奖有 4倍工资,绩效为 A的人年终奖有 3倍工资,而 ...

  5. git —— 分支

    git中每一个分支相当于一个时间线 并列且相互平行 控制用指针控制~ 1.第一种创建命令: $ git branch 分支名称 —— 创建分支 $ git checkout 分支名称 —— 切换分支 ...

  6. Luogu P1750 【出栈序列】

    一眼(万年)贪心minn设小调不出来祭 首先要保证更靠前的输出更小那么容易想到,对于之后可能入栈的元素(即栈的剩余空间仍能装下的所有元素),我们可以取其中的最小值minn,和栈顶元素$top$比较,如 ...

  7. IIS部署asp.net MVC 出现错误 403.14-Forbidden解决办法

    可能性一: <system.webServer>   <validationvalidateIntegratedModeConfiguration="false" ...

  8. CCF CSP 201604-4 游戏

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201604-4 游戏 问题描述 小明在玩一个电脑游戏,游戏在一个n×m的方格图上进行,小明控制 ...

  9. PHP随机浮点数

    function randomFloat($min = 0, $max = 1) { $rand = mt_rand(); $lmax = mt_getrandmax(); return $min + ...

  10. IE6 验证码刷新失败显示空白解决办法

    原因:点击a标签看不清?换图片 结果验证码显示的空白! 解决办法:在对应的点击事件最后加上return false 即可解决问题. 下面是HTML源码: <p class="regis ...