bzoj 3262 陌上花开
本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护。
把三维相等的合并到一个里面。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#define N 100005
using namespace std;
int n,k,m;
struct node
{
int x,y,z,num,op;
int yuan;
bool operator == (const node &b)
{
return x==b.x&&y==b.y&&z==b.z;
}
}a[N],b[N];
int shan[N];
int ans[N];
bool cmp1(node aa,node bb)
{
if(aa.num==)return ;
if(bb.num==)return ;
if(aa.x!=bb.x)return aa.x<bb.x;
if(aa.y!=bb.y)return aa.y<bb.y;
if(aa.z!=bb.z)return aa.z<bb.z; }
bool cmp2(node aa,node bb)
{
if(aa.y!=bb.y)return aa.y<bb.y;
return aa.op<bb.op;
}
int c[];
void add(int x,int y)
{
for(int i=x;i<=k;i+=(i&(-i)))c[i]+=y;
}
int qur(int x)
{
int now=;
for(int i=x;i;i-=(i&(-i)))now+=c[i];
return now;
}
void solve(int l,int r)
{
if(l==r)return ;
int mid=(l+r)>>;
solve(l,mid);solve(mid+,r);
int cnt=;
for(int i=l;i<=mid;i++)
{
b[++cnt]=a[i];
b[cnt].op=;
}
for(int i=mid+;i<=r;i++)
{
b[++cnt]=a[i];
b[cnt].op=;
}
sort(b+,b+cnt+,cmp2);
for(int i=;i<=cnt;i++)
{
if(b[i].op==)add(b[i].z,b[i].num);
else ans[b[i].yuan]+=qur(b[i].z);
}
for(int i=;i<=cnt;i++)if(b[i].op==)add(b[i].z,-b[i].num);
}
int zui[N];
int main()
{
scanf("%d%d",&n,&k);m=n;
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
a[i].num=;
}
sort(a+,a+n+,cmp1);
for(int i=;i<=n;i++)
{
if(a[i]==a[i-])
{
a[shan[i-]].num++;
shan[i]=shan[i-];
a[i].num--;
}
else shan[i]=i;
}
sort(a+,a+n+,cmp1);
while(a[n].num==)n--;
for(int i=;i<=n;i++)a[i].yuan=i;
solve(,n);
for(int i=;i<=n;i++)zui[ans[a[i].yuan]+a[i].num-]+=a[i].num;
for(int i=;i<=m-;i++)printf("%d\n",zui[i]);
return ;
}
bzoj 3262 陌上花开的更多相关文章
- Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治
Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...
- bzoj 3262 陌上花开 - CDQ分治 - 树状数组
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- BZOJ.3262.陌上花开([模板]CDQ分治 三维偏序)
题目链接 BZOJ3262 洛谷P3810 /* 5904kb 872ms 对于相邻x,y,z相同的元素要进行去重,并记录次数算入贡献(它们之间产生的答案是一样的,但不去重会..) */ #inclu ...
- BZOJ 3262 陌上花开 ——CDQ分治
[题目分析] 多维问题,我们可以按照其中一维排序,然后把这一维抽象的改为时间. 然后剩下两维,就像简单题那样,排序一维,树状数组一维,按照时间分治即可. 挺有套路的一种算法. 时间的抽象很巧妙. 同种 ...
- 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 陌上花开
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美 ...
- BZOJ 3262: 陌上花开 CDQ
这个题大部分人用了离散然后水之,然而.....作为一只蒟蒻我并没有想到离散,而是直接拿两个区间一个对应n,一个对应k来搞,当然这两个区间是对应的,我把第一维排序,第二维CDQ,第三维树状数组,然而由于 ...
- bzoj 3262 陌上花开 【CDQ分治】
三维偏序 首先把所有花按 x一序,y二序,z三序 排序,然后去重,con记录同样的花的个数,然后进行cdq 现在假设有[l.r]区间,其中[l,mid] [mid+1,r],已经递归处理完毕.我们把区 ...
随机推荐
- android studio 导入项目太慢(卡条)
原因: 下载的项目和你当前已经下载的grandle 不一致, 导致导入的时候到网上下载相应的版本. 最简单的办法,修改你这个需要导入的项目. 需要修改的文件: 1. xxx-project/.idea ...
- Openstack api 学习文档 & restclient使用文档
Openstack api 学习文档 & restclient使用文档 转载请注明http://www.cnblogs.com/juandx/p/4943409.html 这篇文档总结一下我初 ...
- [MySQL Reference Manual]14 InnoDB存储引擎
14 InnoDB存储引擎 14 InnoDB存储引擎 14.1 InnoDB说明 14.1.1 InnoDB作为默认存储引擎 14.1.1.1 存储引擎的趋势 14.1.1.2 InnoDB变成默认 ...
- 【转】Hive内部表、外部表
hive内部表.外部表区别自不用说,可实际用的时候还是要小心. 1. 内部表: create table tt (name string , age string) location '/input/ ...
- Redis时延问题分析及应对
Redis时延问题分析及应对 Redis的事件循环在一个线程中处理,作为一个单线程程序,重要的是要保证事件处理的时延短,这样,事件循环中的后续任务才不会阻塞: 当redis的数据量达到一定级别后(比如 ...
- iOS AppIcon尺寸和上传ITunes构建版本尺寸
避免忘记. 记录一下 App Icon: 29X2940X4058X5876X7687X8780X80120X120152X152167X167180X180 ITunes构建版本: 1242 x 2 ...
- [原创]kali linux下破解wifi密码以及局域网渗透
无线破解是进行无线渗透的第一步.破解无线目前只有两种方法:抓包.跑pin. 破解无线方法一:抓包.我是在kali linux下进行的. 将无线网卡的模式调为监听模式. airmon-ng start ...
- openstack-swift云存储部署(一)
最近因为工作的需要搭建了一套swift云存储架构 我们先来解读一下里面的技术知识点:swift服务是属于openstack中的一种组件服务,openstack中的组件服务还有keystone.Nova ...
- AP是什么
百度链接: AP---http://baike.baidu.com/link?url=_mC-Wkgl8j1_awpuicoZk3i4MWVcLaio1nm9XRt60F9QD4V_lJ-kE7J4C ...
- [django]django xlrd处理xls中日期转换问题
xlrd会把xls文件中比如20160--03-01类型的时间转换成整数,那么我们如何保证xlrd读取进来的时间为2016-03-01格式呢? 使用xlrd中的xldate_as_tuple函数 代码 ...