【BZOJ3262】陌上花开 cdq分治
【BZOJ3262】陌上花开
Description
Input
Output
Sample Input
3 3 3
2 3 3
2 3 1
3 1 1
3 1 2
1 3 1
1 1 2
1 2 2
1 3 2
1 2 1
Sample Output
1
3
0
1
0
1
0
0
1
HINT
1 <= N <= 100,000, 1 <= K <= 200,000
题解:先按第一维排序;然后cdq分治,具体做法是将整个区间[l,r]分成[l,mid]和[mid+1,r],然后递归处理左右两半,这样我们就只需要求出有多少跨过mid的关系了。这个我们一边分治一边将第二维归并排序,然后将第三维扔到树状数组里,顺便再树状数组里统计一下答案
注意本题需要判重,即如果两朵花所有属性都相等,那么它们都比对方美丽
珍爱生命,远离memset
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn=100010;
struct node
{
int x,y,z;
}s[maxn];
int s1[maxn],s2[maxn],ss[maxn],ans[maxn],tr[maxn<<1],p[maxn],q[maxn],sta[maxn];
int n,m,nn;
bool cmp(node a,node b)
{
if(a.x==b.x&&a.y==b.y) return a.z<b.z;
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
void updata(int a,int v)
{
for(int i=a;i<=m;i+=i&-i) tr[i]+=v;
}
int query(int a)
{
int i,ret=0;
for(i=a;i;i-=i&-i) ret+=tr[i];
return ret;
}
void dfs(int l,int r)
{
if(l==r)
{
p[l]=l;
return ;
}
int i,mid=l+r>>1,h1=l,h2=mid+1;
dfs(l,mid),dfs(mid+1,r);
for(i=l;i<=r;i++)
{
if(h2<=r&&(h1>mid||s1[p[h1]]>s1[p[h2]])) ans[p[h2]]+=query(s2[p[h2]]),q[i]=p[h2++];
else updata(s2[p[h1]],ss[p[h1]]),q[i]=p[h1++];
}
for(i=l;i<=mid;i++) updata(s2[i],-ss[i]);
for(i=l;i<=r;i++) p[i]=q[i];
}
int main()
{
scanf("%d%d",&n,&m);
int i;
for(i=1;i<=n;i++) scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].z);
sort(s+1,s+n+1,cmp);
for(i=1;i<=n;i++)
{
if(s[i].x!=s[i-1].x||s[i].y!=s[i-1].y||s[i].z!=s[i-1].z) s1[++nn]=s[i].y,s2[nn]=s[i].z;
ss[nn]++;
}
dfs(1,nn);
for(i=1;i<=nn;i++) sta[ans[i]+ss[i]-1]+=ss[i];
for(i=0;i<n;i++) printf("%d\n",sta[i]);
return 0;
}
【BZOJ3262】陌上花开 cdq分治的更多相关文章
- bzoj3262陌上花开 cdq分治
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2794 Solved: 1250[Submit][Status][Discus ...
- bzoj3262陌上花开 cdq分治入门题
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- bzoj3262: 陌上花开(cdq分治+树状数组)
3262: 陌上花开 题目:传送门 题解: %%%cdq分治 很强大的一个暴力...感觉比分块高级多了 这道题目就是一个十分经典的三维偏序的例题: 一维直接暴力排序x 二维用csq维护y 三维用树状数 ...
- bzoj3262 陌上花开 cdq分治(入门)
题目传送门 思路:cdq分治处理偏序关系的模板题,主要就是学cdq分治吧,还在入门中. 代码其实也很好理解,记得树状数组操作的上限是 z的最大值,不是n的最大值,这个细节wa了好久. #include ...
- bzoj3262 陌上花开——CDQ分治
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 第一道CDQ分治题! 看博客:https://www.cnblogs.com/Narh ...
- 【学术篇】bzoj3262 陌上花开. cdq分治入门
花儿们已经很累了-- 无论是花形.颜色.还是气味, 都不是为了给人们摆出来欣赏的, 更不是为了当做出题的素材的, 她们并不想自己这些属性被没有生命的数字量化, 并不想和其它的花攀比, 并无意分出个三六 ...
- BZOJ3262:陌上花开(CDQ分治)
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美 ...
- [Bzoj3262]陌上花开(CDQ分治&&树状数组||树套树)
题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 #include<bits/stdc++.h> using nam ...
- P3810 陌上花开 CDQ分治
陌上花开 CDQ分治 传送门:https://www.luogu.org/problemnew/show/P3810 题意: \[ 有n 个元素,第 i 个元素有 a_i. b_i. c_i 三个属性 ...
随机推荐
- 树形结构 DropDownList
前台 <asp:DropDownList ID="ddlOutType" runat="server" /> 后台代码: 先绑定第一级 string ...
- DataRowState、AcceptChanges、RejectChanges综合使用示例:实现DataGridView数据的增、删、改
下面的示例中,通过一个程序,演示使用DataRowState.AcceptChanges.RejectChanges,实现DataGridView数据的增.删.改. 一.界面设计 二.代码实现 usi ...
- Struts2 的Action中取得请求参数值的几种方法
先看GetRequestParameterAction类代码: Java代码 public class GetRequestParameterAction extends ActionSupport ...
- No supported encrypter found. The cipher and / or key length are invalid.
终端使用如下命令: php artisan key:generate 将生成的key复制到config/app.php替换82行的APP_KEY键值.
- oracle权限详解
一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户而言). 实体权限:某种权限用户对其它用户的表或视图的存取权限.(是针对表或视图而言的). 二.系统权限管理:1.系统权限分类: ...
- 关于Cocos2d-x中监听物体不超越边界的解决方案
写一个监听器 touchlistener->onTouchMoved = [this](Touch* pTouch, Event*) { auto delta = pTouch->getD ...
- 解决App can’t be opened because it is from an unidentified developer
关闭设置 打开终端 输入sudo spctl --master-disable
- spring 优点
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易实 ...
- 不可将布尔变量直接与 TRUE、FALSE 或者 1、0 进行比较
不可将布尔变量直接与 TRUE.FALSE 或者 1.0 进行比较. 根据布尔类型的语义,零值为“假”(记为 FALSE),任何非零值都是“真”(记为 TRUE). TRUE 的值究竟是什么并没有统一 ...
- SimplifiedHibernate:简化了的Hibernate
我的目的是实现下Hibernate中增删改查.缓存的核心功能.虽然基本功能实现了,但可能还有好多Bug,欢迎点评拍砖,没准能在一片谩骂声中取得意想不到的进步,:) // DatabaseAccess. ...