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中Listview展示及其优化好处
展示效果: 中间的item条目是可以上下滑动的. 代码实现: @Override public View getView(int position, View convertView, ViewGro ...
- css padding 填充
语法: padding:[ <length> | <percentage> ]{1,4} 默认值:看每个独立属性 适用于:所有元素,除 table-row-group | ta ...
- ASP.NET MVC中Unobtrusive Ajax的妙用
Unobtrusive Javascript有三层含义:一是在HTML代码中不会随意的插入Javsscript代码,只在标签中加一些额外的属性值,然后被引用的脚本文件识别和处理:二是通过脚本文件所增加 ...
- AEAI Portal V3.5.4升级说明,门户集成平台
1 总体说明 本次升级是AEAI Portal的一次重要升级,主要扩展了开发社区(论坛).移动门户功能,同时修正一些功能BUG等,具体内容如下: 2 升级内容 功能扩展: 扩展开发社区导航 扩展移动门 ...
- WebLogic: console 启动慢解决办法
找到WebLogic使用的JDK目录. 修改java_home/jre/lib/security/java.security文件: 将seucrerandom.source=file:/dev/ura ...
- SQL Server 2008 R2——TRUNCATE TABLE 无法截断表 该表正由 FOREIGN KEY 约束引用
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- Start Instance 操作详解 - 每天5分钟玩转 OpenStack(31)
本节通过日志文件详细分析 instance start 操作. 下面是 start instance 的流程图 向 nova-api 发送请求 nova-api 发送消息 nova-compute 执 ...
- 在Cortex-M系列上如何准确地做us级延时?
前几天刚好同事问起在Cortex-M上延时不准的问题,在网上也没找到比较满意的答案,干脆自己对这个问题做一个总结. 根据我们的经验,最容易想到的大概通过计算指令周期来解决.该思路在Cortex上并不是 ...
- 不懂前端的程序员不是好美工——UI框架metronic使用教程——程序员视角
本着不懂前端的程序员不是好美工的观点,所以作为一个仅懂一点前端的程序员,为了成为一个好美工,所以只能用些取巧的方法伪装一下. metronic一个基于bootstrap的响应式的后台管理平台的UI框架 ...
- 防火墙防DDOS攻击的简单设置
#Ping洪水攻击(Ping of Death) iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s - ...