#M0002. 【模板】三维偏序

【模板】三维偏序

题目背景

这是 P3810 【模板】三维偏序 / 陌上花开 简单版,保证没有重复点,数据随机,方便初学者入门。

题目描述

n n 个元素,第 i i 个元素有 ai,bi,ci a_i,b_i,c_i 三个属性,设 f(i) f(i) 表示满足 ajai a_j \leq a_i bjbi b_j \leq b_i cjci c_j \leq c_i ji j \ne i jj 的数量。

对于所有 d[0,n) d \in [0, n) ,求 f(i)=d f(i) = d 的数量。

保证没有重复点

输入格式

第一行两个整数 n,k n,k ,表示元素数量和最大属性值。

接下来 n n 行,每行三个整数 ai,bi,ci a_i ,b_i ,c_i ,分别表示三个属性值。

输入数据保证没有重复点(即不存在 iji\ne j ,ai=aja_i=a_jbi=bjb_i=b_jci=cjc_i=c_j 的两个点)

输出格式

n n 行,第 d+1 d + 1 行表示 f(i)=d f(i) = d i i 的数量。

5 10
1 2 1
3 4 4
1 3 2
2 5 5
10 10 10
1
1
2
0
1

样例1解释

将所有点排序,可以得到如下:

1 2 1 f[i]=0
1 3 2 f[i]=1
3 4 4 f[i]=2
2 5 5 f[i]=2
10 10 10 f[i]=4

那么 f[i]=0 的个数为 1f[i]=1/2/3/4 第个数依次为 1 2 0 1 , 所以答案就是为 1 1 2 0 1.

数据规模与约定

对于所有数据,保证 1n105 1 \leq n \leq 10^51ai,bi,cik2×1051 \leq a_i, b_i, c_i \le k \leq 2 \times 10^5

Subtask1:n103Subtask1: n\le 10^3 , 2020

Subtask2:n5×104Subtask2: n\le 5\times 10^4, 3030

Subtask3:n105Subtask3: n\le 10^55050

数据随机,于是就会有多种做法: K-D tree 、CDQ 、 bitset 、数据结构等