博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ - 3262 陌上花开
阅读量:5351 次
发布时间:2019-06-15

本文共 1273 字,大约阅读时间需要 4 分钟。

3262: 陌上花开

Time Limit: 20 Sec  Memory Limit: 256 MB
Submit: 5433  Solved: 2623
[][][]

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

 

Source

 三维偏序 先码下cdq
#include
#define ll long long#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define inf 0x3f3f3f3f#define eps 1e-6using namespace std;const int maxn = 100005;struct node{ int x,y,z,cnt,ans;}p[maxn];int tree[maxn*2],k,ans[maxn];int lowbit(int x){ return x&(-x);}bool cmpx(const node u,const node v){ if(u.x==v.x&&u.y==v.y) return u.z
>1; cdq(l,m); cdq(m+1,r); sort(p+l,p+1+m,cmpy); sort(p+1+m,p+1+r,cmpy); int j=l; for(int i=m+1;i<=r;i++){ while(j<=m&&p[j].y<=p[i].y){ add(p[j].z,p[j].cnt); j++; } p[i].ans+=query(p[i].z); } for(int i=l;i
View Code

 

 

转载于:https://www.cnblogs.com/MengX/p/11184709.html

你可能感兴趣的文章
awk工具-解析1
查看>>
推荐一款可以直接下载浏览器sources资源的Chrome插件
查看>>
CRM product UI里assignment block的显示隐藏逻辑
查看>>
AMH V4.5 – 基于AMH4.2的第三方开发版
查看>>
Web.Config文件配置之配置Session变量的生命周期
查看>>
mysql导入source注意点
查看>>
linux下编译安装nginx
查看>>
ArcScene 高程不同的表面无法叠加
查看>>
[ONTAK2010] Peaks
查看>>
DLL 导出函数
查看>>
windows超过最大连接数解决命令
查看>>
12个大调都是什么
查看>>
angular、jquery、vue 的区别与联系
查看>>
参数范围的选择
查看>>
使用 MarkDown & DocFX 升级 Rafy 帮助文档
查看>>
THUPC2019/CTS2019/APIO2019游记
查看>>
Nodejs Express模块server.address().address为::
查看>>
4.3.5 Sticks (POJ1011)
查看>>
POJ 2960 S-Nim 博弈论 sg函数
查看>>
Dijkstra模版
查看>>