3262: 陌上花开
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 2010 Solved: 898
[Submit][Status][Discuss]
Description
有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),又三个整数表示。现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。定义一朵花A比另一朵花B要美丽,当且仅当Sa>=Sb,Ca>=Cb,Ma>=Mb。显然,两朵花可能有同样的属性。需要统计出评出每个等级的花的数量。
Input
第一行为N,K (1 <= N <= 100,000, 1 <= K <= 200,000 ), 分别表示花的数量和最大属性值。
以下N行,每行三个整数si, ci, mi (1 <= si, ci, mi <= K),表示第i朵花的属性
Output
包含N行,分别表示评级为0...N-1的每级花的数量。
Sample Input
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
Sample Output
3
1
3
0
1
0
1
0
0
1
HINT
1 <= N <= 100,000, 1 <= K <= 200,000
Source
树套树 CDQ分治
这个题有也许是三种排序方法吧
第一种全部升序,然后统计[l,mid]中比[mid+1,r]中小的 这样保证的是si<=sj,ci<=cj,mi<=mj
第二种全部降序,然后统计[l,mid]中比[mid+1,r]中大的 保证的是si>=sj,ci>=cj,mi>=mj
但是第三种 先全部升序再统计大的 我就不是很懂了
我写的是第一种
注意统计边界上 a[l]==a[r]这时ans+=a[l].cnt-1
以及注意当a[i]==a[j]时,这时答案肯定会出问题(因为你统计时将他拆开了) 所以我们合并相同的
/*To The End Of The Galaxy*/
#include
#include
#include
#include
#include
#include
#include
#include
#include