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

 
三维偏序集,黄学长告诉我们可以
1.树状数组+treap √
2.cdq分治
目前只会树套树的做法,然而我的树套树真心很弱
 #include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#define M 5000005
using namespace std;
int n,m,sz,tmp;
int root[],ans[],sum[];
int size[M],ls[M],rs[M],v[M],w[M],rnd[M];
struct node{int a,b,c;}a[];
int lowbit(int x){return x&(-x);}
bool cmp(node a,node b){
if (a.a==b.a&&a.b==b.b) return (a.c<b.c);
if (a.a==b.a) return (a.b<b.b);
return (a.a<b.a);
}
void updata(int x){size[x]=size[ls[x]]+size[rs[x]]+w[k];}
void lturn(int &k){int t=rs[k];rs[k]=ls[t];ls[t]=k;updata(k);updata(t);k=t;}
void rturn(int &k){int t=ls[k];ls[k]=rs[t];rs[t]=k;updata(k);updata(t);k=t;}
void ins(int &k,int num){
if (!k){sz++;k=sz;rnd[k]=rand();v[k]=num;size[k]=w[k]=;return;}
size[k]++;
if (v[k]==num) {w[k]++;return;}
else if (v[k]>num){ins(ls[k],num);if (rnd[ls[k]]<rnd[k]) rturn(k);}
else {ins(rs[k],num);if (rnd[rs[k]]<rnd[k]) lturn(k);}
} void getrank(int k,int num){
if (!k) return;
int l=ls[k],r=rs[k];
if (v[k]==num) {tmp+=size[l]+w[k];return;}
else if (v[k]>num) getrank(l,num);
else if (v[k]<num){tmp+=size[l]+w[k];getrank(r,num);}
} void ask(int x,int num){
for (int i=x;i;i-=lowbit(i))
getrank(root[i],num);
} void insert(int x,int num){
for (int i=x;i<=m;i+=lowbit(i))
ins(root[i],num);
} int main(){
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++) scanf("%d%d%d",&a[i].a,&a[i].b,&a[i].c);
sort(a+,a+n+,cmp);
for (int i=;i<=n;i++){
if (a[i].a==a[i+].a&&a[i].b==a[i+].b&&a[i].c==a[i+].c&&i!=n) sum[i+]=sum[i]+;
else{
tmp=;
ask(a[i].b,a[i].c);
ans[tmp]+=sum[i]+;
}
insert(a[i].b,a[i].c);
}
for (int i=;i<n;i++)printf("%d\n",ans[i]);
}
 

【BZOJ3262】 陌上花开的更多相关文章

  1. [BZOJ3262]陌上花开

    [BZOJ3262]陌上花开 试题描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一 ...

  2. bzoj3262 陌上花开 cdq+树状数组

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

  3. bzoj3262陌上花开 cdq分治

    3262: 陌上花开 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 2794  Solved: 1250[Submit][Status][Discus ...

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

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

  5. bzoj3262陌上花开 cdq分治入门题

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

  6. bzoj3262: 陌上花开(cdq分治+树状数组)

    3262: 陌上花开 题目:传送门 题解: %%%cdq分治 很强大的一个暴力...感觉比分块高级多了 这道题目就是一个十分经典的三维偏序的例题: 一维直接暴力排序x 二维用csq维护y 三维用树状数 ...

  7. bzoj3262: 陌上花开(树套树)

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  8. [模板] CDQ分治&&BZOJ3262:陌上花开

    简介 CDQ分治是分治的一种, 可以看做归并排序的扩展, 利用离线将一些 \(O(n)\) 的暴力优化到 \(O(log n)\). 它可以用来顶替一些高级(log)数据结构等. 一般地, CDQ分治 ...

  9. [luogu3810][bzoj3262][陌上花开]

    题目链接 思路 听说可以CDQ分治,然后我不会,所以我写树套树 首先肯定先按照a拍个序.然后就成了在b,c这两个数组中查询了.用一个树状数组套treap来维护.当插入一个数的时候,就在树状数组的b这个 ...

  10. bzoj3262: 陌上花开(CDQ+树状数组处理三维偏序问题)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 题目大意:中文题目 具体思路:CDQ可以处理的问题,一共有三维空间,对于第一维我们 ...

随机推荐

  1. php.ini详解

    [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;; ...

  2. linux安装gcc的一些问题。

    输入命令:yum install gcc 提示: Loaded plugins: fastestmirror, langpacksExisting lock /var/run/yum.pid: ano ...

  3. win10 IIS10 HTTP 错误 404.2 - Not Found

    环境win10系统IIS10里边发布web应用程序的时候,出现 HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页 ...

  4. [未完成]关于JavaScript总结

    jsp服务端,js客户端. javascript 是基于对象和事件驱动的脚本语言. 特点: 交互性 安全性(不允许直接访问本地硬盘) 跨平台性(只要是可以解析java的浏览器都可以执行,和平台无关) ...

  5. ZooKeeper(3.4.5) - 开源客户端 Curator(2.7.0) 的简单示例

    一.创建会话 1. 创建会话 package com.huey.dream.demo; import org.apache.curator.framework.CuratorFramework; im ...

  6. 【转载】Kafka实现篇之消息和日志

    http://blog.csdn.net/honglei915/article/details/37760631 消息格式 日志 一个叫做“my_topic”且有两个分区的的topic,它的日志有两个 ...

  7. React Native之ViewPagerAndroid跳转页面问题

    前言: 网上目前react-native的教程较少,加上许多帖子还是用的ES5(2015年6月已发布ES6标准),有些细节很难找到答案,这里把遇到的问题做一个分享,让学习者尽量少踩坑. 出现问题: 1 ...

  8. Entity Framework 6.1-Code First

    原文:Entity Framework 6.1-Code First Code First-代码优先,先创建好领域模型.新建MyDbContext继承DbContext.根据代码自动生成数据库 Cod ...

  9. Android的selector,背景选择器

    原文地址 http://android.blog.51cto.com/268543/564581 首先android的selector是在drawable/xxx.xml中配置的,相关图片放在同目录下 ...

  10. Spring事务配置的五种方式(转发)

    Spring事务配置的五种方式(原博客地址是http://www.blogjava.net/robbie/archive/2009/04/05/264003.html)挺好的,收藏转发 前段时间对Sp ...