【BZOJ3262】 陌上花开
Description
Input
Output
Sample Input
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
1
3
0
1
0
1
0
0
1
HINT
1 <= N <= 100,000, 1 <= K <= 200,000
#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】 陌上花开的更多相关文章
- [BZOJ3262]陌上花开
[BZOJ3262]陌上花开 试题描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一 ...
- bzoj3262 陌上花开 cdq+树状数组
[bzoj3262]陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义 ...
- bzoj3262陌上花开 cdq分治
3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2794 Solved: 1250[Submit][Status][Discus ...
- BZOJ3262 陌上花开 —— 三维偏序 CDQ分治
题目链接:https://vjudge.net/problem/HYSBZ-3262 3262: 陌上花开 Time Limit: 20 Sec Memory Limit: 256 MBSubmit ...
- bzoj3262陌上花开 cdq分治入门题
Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一朵花B要美丽,当 ...
- bzoj3262: 陌上花开(cdq分治+树状数组)
3262: 陌上花开 题目:传送门 题解: %%%cdq分治 很强大的一个暴力...感觉比分块高级多了 这道题目就是一个十分经典的三维偏序的例题: 一维直接暴力排序x 二维用csq维护y 三维用树状数 ...
- bzoj3262: 陌上花开(树套树)
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...
- [模板] CDQ分治&&BZOJ3262:陌上花开
简介 CDQ分治是分治的一种, 可以看做归并排序的扩展, 利用离线将一些 \(O(n)\) 的暴力优化到 \(O(log n)\). 它可以用来顶替一些高级(log)数据结构等. 一般地, CDQ分治 ...
- [luogu3810][bzoj3262][陌上花开]
题目链接 思路 听说可以CDQ分治,然后我不会,所以我写树套树 首先肯定先按照a拍个序.然后就成了在b,c这两个数组中查询了.用一个树状数组套treap来维护.当插入一个数的时候,就在树状数组的b这个 ...
- bzoj3262: 陌上花开(CDQ+树状数组处理三维偏序问题)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3262 题目大意:中文题目 具体思路:CDQ可以处理的问题,一共有三维空间,对于第一维我们 ...
随机推荐
- POJ 3074 Sudoku (DLX)
Sudoku Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- [改善Java代码]慎用动态编译
建议17: 慎用动态编译 //=========这篇博文暂时理解不透......... 动态编译一直是Java的梦想,从Java 6版本它开始支持动态编译了,可以在运行期直接编译.java文件,执行. ...
- poj 3278 Catch That Cow 优化深搜
这题的思想很简单,就是每次找出队列里面花费时间最少的来走下一步,这样当我们找到k点后,所花费的时间一定是最少的. 但要用一个标记数组vis[200010],用来标记是否走过.否则会内存溢出. #inc ...
- poj 1716 差分约束
水水的. 给几个不等式:dis[b]-dis[a]>=2; 0<=dis[i+1]-dis[i]<=1; #include<iostream> #include< ...
- MyEclipse中配置SWT/JFace/SWT-Designer 艰辛路程
我最近受一个老师所托,写一个小系统,为了更加熟练使用Java,我决定用Java写一个PC软件. 我是一个比较追求完美的孩子,所以虽然老师对界面没啥要求,但是为了加快速度和界面美观,果断选择SWT/JF ...
- Java Servlet-http协议
---恢复内容开始--- 互联网三大基石: url:定位数据 html:显示数据 http:传输数据
- 把CheckedListBoxControl设置为单选框
private void chkControl_ItemChecking(object sender, DevExpress.XtraEditors.Controls.ItemCheckingEven ...
- asp.net连接oracle的问题及方法总结
.net连oracle数据库的两个方法介绍1. 安装oracle客户端,连接oracle 需要在客户端%oracle_client_home%network/admin/配置tnsnames.ora, ...
- php递归方法实现无限分类实例
数组: 代码如下 复制代码 $items = array( array('id' => 1, 'pid' => 0, 'name' => '一级11' ), array('id' ...
- ### 学习《C++ Primer》- 9
Part 9: 模板与泛型编程(第16章) // @author: gr // @date: 2016-03-18 // @email: forgerui@gmail.com 1. 模板参数 类型模板 ...