ref1

ref2

ref3

ref4

#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;
int n, k, c[200005], cnt[200005];
struct Node{
int x, y, z, idx, ans;
bool operator==(const Node &u)const{
return x==u.x && y==u.y && z==u.z;
}
}a[100005], qwq, b[100005];
bool cmp(const Node &u, const Node &v){
if(u.x!=v.x) return u.x<v.x;
else if(u.y!=v.y) return u.y<v.y;
else return u.z<v.z;
}
int lb(int x){
return x & -x;
}
void add(int x, int v){
for(; x<=k; x+=lb(x))
c[x] += v;
}
int query(int x){
int re=0;
for(; x; x-=lb(x))
re += c[x];
return re;
}
void cdq(int l, int r){
if(l==r) return ;
int mid=(l+r)>>1;
cdq(l, mid); cdq(mid+1, r);
int jj=l, kk=mid+1;
for(int i=l; i<=r; i++)
if(jj<=mid && (kk>r || a[jj].y<=a[kk].y)) b[i] = a[jj++];
else b[i] = a[kk++];
for(int i=l; i<=r; i++){
a[i] = b[i];
if(a[i].idx<=mid) add(a[i].z, 1);
else a[i].ans += query(a[i].z);
}
for(int i=l; i<=r; i++)
if(a[i].idx<=mid)
add(a[i].z, -1);
}
int main(){
cin>>n>>k;
for(int i=1; i<=n; i++)
scanf("%d %d %d", &a[i].x, &a[i].y, &a[i].z);
sort(a+1, a+1+n, cmp);
int orzwys1996=1;
for(int i=n; i>=1; i--){
if(a[i]==qwq){
a[i].ans += orzwys1996;
orzwys1996++;
}
else{
qwq = a[i];
orzwys1996 = 1;
}
a[i].idx = i;
}
cdq(1, n);
for(int i=1; i<=n; i++)
cnt[a[i].ans]++;
for(int i=0; i<n; i++)
printf("%d\n", cnt[i]);
return 0;
}

luogu3810 【模板】三维偏序(陌上花开)的更多相关文章

  1. P3810 【模板】三维偏序(陌上花开)

    P3810 [模板]三维偏序(陌上花开) cdq分治+树状数组 三维偏序模板题 前两维用cdq分治,第三维用树状数组进行维护 就像用树状数组搞逆序对那样做--->存权值的出现次数 attenti ...

  2. P3810 【模板】三维偏序(陌上花开)(CDQ分治)

    题目背景 这是一道模板题 可以使用bitset,CDQ分治,K-DTree等方式解决. 题目描述 有 nn 个元素,第 ii 个元素有 a_iai​.b_ibi​.c_ici​ 三个属性,设 f(i) ...

  3. Luogu P3810 【模板】三维偏序(陌上花开)(CDQ分治)

    题目 以三维偏序为例来讲一下CDQ分治. CDQ的本质就是把一个序列分成两段,计算左边对右边的贡献,然后分治. 不过一般都是先分治到底再从下往上算,这样可以先归并再算. 比如这道题,我们先按第一维排序 ...

  4. 洛谷P3810 陌上花开 CDQ分治(三维偏序)

    好,这是一道三维偏序的模板题 当然没那么简单..... 首先谴责洛谷一下:可怜的陌上花开的题面被无情的消灭了: 这么好听的名字#(滑稽) 那么我们看了题面后就发现:这就是一个三维偏序.只不过ans不加 ...

  5. P3810 -三维偏序(陌上花开)cdq-分治

    P3810 [模板]三维偏序(陌上花开) 思路 :按照 1维排序 二维 分治三维树状数组维护 #include<bits/stdc++.h> using namespace std; #d ...

  6. Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治

    Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\).定义一个元素的 ...

  7. BZOJ3262 陌上花开 —— 三维偏序 CDQ分治

    题目链接:https://vjudge.net/problem/HYSBZ-3262 3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit ...

  8. BZOJ 3262: 陌上花开 [CDQ分治 三维偏序]

    Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...

  9. BZOJ3262/洛谷P3810 陌上花开 分治 三维偏序 树状数组

    原文链接http://www.cnblogs.com/zhouzhendong/p/8672131.html 题目传送门 - BZOJ3262 题目传送门 - 洛谷P3810 题意 有$n$个元素,第 ...

  10. bzoj3262: 陌上花开 三维偏序cdq分治

    三维偏序裸题,cdq分治时,左侧的x一定比右侧x小,然后分别按y排序,对于左侧元素按y大小把z依次插入到树状数组里,其中维护每个左侧元素对右侧元素的贡献,在bit查询即可 /************* ...

随机推荐

  1. JavaScript中函数声明和函数表达式的区别

    声明一个函数: var x=1; foo(); function foo() { console.log(x);//1 } myfun();//报错 定义一个函数表达式: var myfun=myfo ...

  2. 关于docker容器内核参数修改问题

    以下内容截取自docker官方文档 地址:https://docs.docker.com/edge/engine/reference/commandline/run/#configure-namesp ...

  3. ubuntu 自动启动程序

    首先打开终端ctrl + alt + t sudo  -i 输入密码:ubuntu chmod 777 /etc/rc.local 打开  vi   /etc/rc.local 按  i  键进入输入 ...

  4. C,通信,多线程,数据库小练习——在线电子词典第一版

    #ifndef FILE_H #define FILE_H #include<stdio.h> #include<sys/types.h> #include<sys/so ...

  5. SAP Netweaver的负载均衡消息服务器 vs CloudFoundry的App Router

    Message server for ABAP Netweaver SAP传统应用经典的三层架构: 起到负载均衡的消息服务器(Message Server)在图中没有得到体现.然后,消息服务器在我们每 ...

  6. PS 厘米与像素切换

    方法一: 快捷键 ctrl + r   打开标尺将鼠标放在标尺刻度上右键 出现菜单里修改即可: 方法二: 编辑---首选项---单位与标尺 修改即可:

  7. 前端三大框架 Vue.js、AngularJS、React 的区别

    Vue.js Vue.js 是一种构建数据驱动的Web界面的渐进式框架,Vue.js 采用自底向上增量开发的设计. Vue.js 轻量高效,数据双向绑定(响应式数据绑定), 它会自动响应数据的变化情况 ...

  8. CentOS替换系统自带JDK

    1.解压jdk安装包到/opt 下 /opt/jdk1.8.0_181 2.编辑/etc/profile, 增加如下内容 export JAVA_HOME=/opt/jdk1.8.0_181expor ...

  9. CYUSB

    /*Summary The application cydesc is used to open the device with cypress GUID and get the device des ...

  10. 自定义配置Webpack和Babel配置

    在使用ant-design-vue的包时样式是可以生效的但是如果我需要用到less文件时会报一个异常 当然这个异常其实很清晰的说明了什么问题看错误信息里面有issues地址,看来问题不止我们遇见了可以 ...