Luogu P3810 【模板】三维偏序(陌上花开) CDQ分治 树状数组
https://www.luogu.org/problemnew/show/P3810
复习板子,重要的题就真的要写三遍???之前写过一篇博客了,不过之前写的那个板子的sort用的规则真是沙雕
#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int n,k,tot=0;
struct flos{
int x,y,z;
int ans,cnt;
}f[maxn];
int num[maxn]={},t[maxn*2]={};
inline bool mcmp1(flos a,flos b){
if(a.x==b.x){
if(a.y==b.y)return a.z<b.z;
return a.y<b.y;
}
return a.x<b.x;
}
inline bool mcmp2(flos a,flos b){
if(a.y==b.y){
if(a.z==b.z)return a.x<b.x;
return a.z<b.z;
}
return a.y<b.y;
}
void addt(int x,int v){
while(x<=k){
t[x]+=v;
x+=(x&-x);
}
}
int gett(int x){
int tsn=0;
while(x){
tsn+=t[x];
x-=(x&-x);
}return tsn;
}
void mcdq(int l,int r){
if(l==r){ f[l].ans+=f[l].cnt-1; return; }
int mid=(l+r)/2;
mcdq(l,mid); mcdq(mid+1,r);
sort(f+l,f+mid+1,mcmp2);
sort(f+mid+1,f+r+1,mcmp2);
int j=l;
for(int i=mid+1;i<=r;++i){
while(f[j].y<=f[i].y&&j<=mid){addt(f[j].z,f[j].cnt);++j;}
f[i].ans+=gett(f[i].z);
}
for(int i=l;i<j;++i)addt(f[i].z,-f[i].cnt);
}
int main(){
scanf("%d%d",&n,&k);
for(int i=1; i<=n; ++i)scanf("%d%d%d",&f[i].x,&f[i].y,&f[i].z);
sort(f+1,f+1+n,mcmp1);
//for(int i=1;i<=n;++i)cout<<f[i].x<<f[i].y<<f[i].z<<endl;
for(int i=1; i<=n; ++i){
if(i!=1 && f[i].x==f[i-1].x && f[i].y==f[i-1].y && f[i].z==f[i-1].z)++f[tot].cnt;
else{ f[++tot]=f[i]; f[tot].cnt=1;}
}
mcdq(1,tot);
for(int i=1;i<=tot;++i)num[f[i].ans]+=f[i].cnt;
for(int i=0;i<n;++i)printf("%d\n",num[i]);
return 0;
}
Luogu P3810 【模板】三维偏序(陌上花开) CDQ分治 树状数组的更多相关文章
- 【bzoj3262】陌上花开  CDQ分治+树状数组
		
题目描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当且仅当Sa&g ...
 - bzoj 3262 陌上花开 - CDQ分治 - 树状数组
		
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
 - bzoj3262: 陌上花开(cdq分治+树状数组)
		
3262: 陌上花开 题目:传送门 题解: %%%cdq分治 很强大的一个暴力...感觉比分块高级多了 这道题目就是一个十分经典的三维偏序的例题: 一维直接暴力排序x 二维用csq维护y 三维用树状数 ...
 - [Bzoj3262]陌上花开(CDQ分治&&树状数组||树套树)
		
题目链接 题目就是赤裸裸的三维偏序,所以用CDQ+树状数组可以比较轻松的解决,但是还是树套树好想QAQ CDQ+树状数组 #include<bits/stdc++.h> using nam ...
 - LOJ3146 APIO2019路灯(cdq分治+树状数组)
		
每个时刻都形成若干段满足段内任意两点可达.将其视为若干正方形.则查询相当于求历史上某点被正方形包含的时刻数量.并且注意到每个时刻只有O(1)个正方形出现或消失,那么求出每个矩形的出现时间和消失时间,就 ...
 - BZOJ_3262_陌上花开_CDQ分治+树状数组
		
BZOJ_3262_陌上花开_CDQ分治+树状数组 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的 ...
 - 【BZOJ4553】[Tjoi2016&Heoi2016]序列 cdq分治+树状数组
		
[BZOJ4553][Tjoi2016&Heoi2016]序列 Description 佳媛姐姐过生日的时候,她的小伙伴从某宝上买了一个有趣的玩具送给他.玩具上有一个数列,数列中某些项的值可能 ...
 - 【bzoj2225】[Spoj 2371]Another Longest Increasing  CDQ分治+树状数组
		
题目描述 给定N个数对(xi, yi),求最长上升子序列的长度.上升序列定义为{(xi, yi)}满足对i<j有xi<xj且yi<yj. 样例输入 8 1 3 3 2 1 1 4 5 ...
 - BZOJ 1176 Mokia CDQ分治+树状数组
		
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1854 Solved: 821[Submit][St ...
 - BZOJ 2683 简单题 cdq分治+树状数组
		
题意:链接 **方法:**cdq分治+树状数组 解析: 首先对于这道题,看了范围之后.二维的数据结构是显然不能过的.于是我们可能会考虑把一维排序之后还有一位上数据结构什么的,然而cdq分治却可以非常好 ...
 
随机推荐
- Windows服务创建及发布
			
二.创建Windows Service 1.新建一个Windows Service,并将项目名称改为“MyWindowsService”,如下图所示: 2.在解决方案资源管理器内将Service1.c ...
 - 作业调度框架Quartz.NET-现学现用-01-快速入门
			
原文:作业调度框架Quartz.NET-现学现用-01-快速入门 前言 你需要应用执行一个任务吗?这个任务每天或每周星期二晚上11:30,或许仅仅每个月的最后一天执行.一个自动执行而无须干预的任务在执 ...
 - 2.7_Database Interface OLE-DB诞生
			
ODBC仅支持关系数据库,以及传统的数据库类型,并且只以C/C++语言API(API就是一些C语言的代码,是最底层的程序,在windows中就是一些.dll的文件)形式提供服务,因而无法符合日渐复杂的 ...
 - Javascript实现的智能消防栓状态监测画面
			
系统需要添加智能消防栓模块.集成了一家采用NbIOT通讯的智能消防栓产品.由第厂家平台对接NbIot特联网平台,我们平台提供一个api从第三方平台接收消防栓状态,用SignlaR把状态推送到前端.需要 ...
 - Django:web认识,jinja2模块,如何安装Django
			
一内容概要 1.HTTP协议 1.1简介  超文本传输协议(英文:Hyper Text Transfer Protocol,HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是 ...
 - cookie遇到java.lang.IllegalArgumentException: Control character in cookie value or attribute
			
java.lang.IllegalArgumentException: Control character in cookie value or attribute. 该异常说明cookie中的val ...
 - Python简单实现在线更新下载
			
Python简单实现 软件在线更新 在线下载(Python simple implementation of software online update and download) 文章来自:htt ...
 - python进程不能并行的原因,进程阻塞
			
上图红色框的写法进程会阻塞,并不能实现多进程.这种写法不需要调用start方法也会执行. 注意:正常写法是上图红框下面的代码,即可实现多进程.
 - vue项目配置Mock.js
			
扯在前面 最近一直在忙跳槽的事情,博客也好久没有更新了,上次更新还是去年,不出意外的话,从今天起继续今年的博客之旅. 今天继续完善我之前的项目架构,从零开始搭建vue移动端项目到上线,有需要的同学可以 ...
 - linux各种服务的搭建
			
https://blog.csdn.net/qq_33571718/article/details/81543408 VPN --linux服务搭建 https://blog.csdn.net/ ...