bzoj 3262
题意:给你一些三维上的点,对于每个点,统计三个坐标都小于等于该点的点数。
如果点的范围在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的更多相关文章
- bzoj 3262 陌上花开 - CDQ分治 - 树状数组
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)
题目链接 BZOJ3262 洛谷P3810 /* 5904kb 872ms 对于相邻x,y,z相同的元素要进行去重,并记录次数算入贡献(它们之间产生的答案是一样的,但不去重会..) */ #inclu ...
- Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治
Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...
- 【BZOJ 3262】 3262: 陌上花开 (CDQ分治)
3262: 陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A ...
- [BZOJ 3262]陌上开花
今天写了到偏序问题,发现博主真的是个傻X 传送门 以前的写法 /************************************************************** Probl ...
- BZOJ 3262 陌上花开 ——CDQ分治
[题目分析] 多维问题,我们可以按照其中一维排序,然后把这一维抽象的改为时间. 然后剩下两维,就像简单题那样,排序一维,树状数组一维,按照时间分治即可. 挺有套路的一种算法. 时间的抽象很巧妙. 同种 ...
- bzoj 3262 陌上花开
本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护. 把三维相等的合并到一个里面. #include<iostream> #include<cstdio ...
- BZOJ 3262 陌上花开 CDQ分治
= =原来复杂度还是nlog^2(n) Orz 被喷了 #include<cstdio> #include<cstdlib> #include<algorithm> ...
- BZOJ 3262: 陌上花开 [CDQ分治 三维偏序]
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- 【刷题】BZOJ 3262 [HNOI2008]GT考试
Description 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字. 他的不吉利数学A1A2...Am(0< ...
随机推荐
- xmlHttpRequest 跨域和上传或下载进度条
跨域 XMLHttpRequest 请求 普通网页能够使用XMLHttpRequest对象发送或者接受服务器数据, 但是它们受限于同源策略. 扩展可以不受该限制. 任何扩展只要它先获取了跨域请求许可, ...
- 【codeforces】【比赛题解】#937 CF Round #467 (Div. 2)
没有参加,但是之后几天打了哦,第三场AK的CF比赛. CF大扫荡计划正在稳步进行. [A]Olympiad 题意: 给\(n\)个人颁奖,要满足: 至少有一个人拿奖. 如果得分为\(x\)的有奖,那么 ...
- accept系统调用
/* * For accept, we attempt to create a new socket, set up the link * with the client, wake up the c ...
- 【web开发】web前端开发常用技术总结归纳
技术选型规范规范 • Vue版本:2.x • 前端路由:vue-route • 异步请求:Axios • 全局状态管理:VueX • css预处理器:sass/less • h5项目移动端适配规则:使 ...
- python面向对象(二)之封装
封装定义: 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用. 即"封装"就是将抽象得到的数 ...
- 客户端使用less方法
<link rel="stylesheet/less" type="text/css" href="/css/style.less"& ...
- 使用Appium 测试微信小程序和微信公众号方法
由于腾讯系QQ.微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小 ...
- MinGW-MSYS Bundle Win32编译ffmpeg 生成DLL并加入X264模块
组件资源站点 1)MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/files/ 2)yasm汇编器 http://yasm. ...
- 大数据统计分析平台之三、Kibana安装和使用
kibana安装 1.到官网下载kibana: cd /usr/local/software wget https://artifacts.elastic.co/downloads/kibana/ki ...
- Ninject中调用webapi卡住的情况解决
过年这两天在家做项目,把mvc升级到了5.1,webapi升级到了2.1,忽然发现一个问题,在某些页面上ajax调用webapi时会发现卡死现象,CPU也没有被占用,就是网页一些在加载也不报错,经过2 ...