ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[BZOJ3262]:陌上花开(CDQ分治)

2019-07-26 21:58:10  阅读:298  来源: 互联网

标签:BZOJ3262 朵花 陌上 一朵花 geqslant 样例 CDQ leqslant


题目传送门


题目描述

有$n$朵花,每朵花有三个属性:花形$(s)$、颜色$(c)$、气味$(m)$,用三个整数表示。
现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。
定义一朵花$A$比另一朵花$B$要美丽,当且仅$S_a\geqslant S_b,C_a\geqslant C_b,M_a\geqslant M_b$。
显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。


输入格式

第一行为$N,K$,分别表示花的数量和最大属性值。
以下$N$行,每行三个整数$s_i,c_i,m_i$,表示第$i$朵花的属性。


输出格式

包含$N$行,分别表示评级为$0...N-1$的每级花的数量。


样例

样例输入

10 3
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

样例输出

3
1
3
0
1
0
1
0
0
1


数据范围与提示

$1\leqslant N\leqslant 100,000$。

$1\leqslant K\leqslant 200,000$。

$1\leqslant s_i,c_i,m_i\leqslant K$。


题解

这道题好像可以用bitset,CDQ分治,K-Dtree解决。

bitset好像跑不过,我也不清楚……

最尴尬的是K-Dtree我不会……

那么我就来讲讲CDQ分治。

假设我们不考虑$m_i$,那么我们就变成了二元组排序,可以先将$s_i$排序,然后问题就转化成了:在一个数列里,找在$i$之前有几个数小于$c_i$。

很显然要使用树状数组维护即可在$\Theta (n\log n)$时间内求出答案。

那么现在又加了一维,怎么办呢?

首先,将这个三元组排序并去重,那么权值a已经随下标有序。

 

想睡觉觉了……

标签:BZOJ3262,朵花,陌上,一朵花,geqslant,样例,CDQ,leqslant
来源: https://www.cnblogs.com/wzc521/p/11253059.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有