C++之路进阶——bzoj3262(陌上花开)

F.A.Qs | Home | Discuss | ProblemSet | Status | Ranklist | Contest | ModifyUser gryz2016 | Logout | 捐赠本站 |
---|
3262: 陌上花开
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 812 Solved: 361
[Submit][Status][Discuss]
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
Source
题解:
三维片续集,将a排序,用树状数组插入b,再在树状数组中建立treap,维护c。
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#define M 5000005 using namespace std; int n,m,tmp,sz,ans[],sum[],root[],s[M],ls[M],rs[M],rond[M],v[M],w[M]; struct ss
{
int a;
int b;
int c;
}a[M]; bool cmp (ss a,ss 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;
} int lowbit(int x) {return x&(-x);} void updata(int k) {s[k]=s[ls[k]]+s[rs[k]]+w[k];} int rturn(int &k) {int t=ls[k];ls[k]=rs[t];rs[t]=k;s[t]=s[k];updata(k);k=t;} int lturn(int &k) {int t=rs[k];rs[k]=ls[t];ls[t]=k;s[t]=s[k];updata(k);k=t;} void ins (int &k,int num)
{
if (!k) {k=++sz;rond[k]=rand();s[k]=w[k]=;v[k]=num;return;}
s[k]++;
if (num==v[k]) {w[k]++;return;}
else
if (num<v[k]) {ins(ls[k],num);if (rond[ls[k]]<rond[k]) rturn(k);}
else {ins(rs[k],num);if (rond[rs[k]]<rond[k])lturn(k);}
} void getrank(int k,int num)
{
if (!k) return;
if (num==v[k]) {tmp+=s[ls[k]]+w[k];return;}
num>=v[k]? tmp+=s[ls[k]]+w[k],getrank(rs[k],num):getrank(ls[k],num);
} void insert(int x,int num)
{
for (int i=x;i<=m;i+=lowbit(i))
ins(root[i],num);
} void ask(int x,int num)
{
for(int i=x;i;i-=lowbit(i))
getrank(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]);
}
C++之路进阶——bzoj3262(陌上花开)的更多相关文章
- [BZOJ3262]陌上花开
[BZOJ3262]陌上花开 试题描述 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义一朵花A比另一 ...
- bzoj3262 陌上花开 cdq+树状数组
[bzoj3262]陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义 ...
- C++之路进阶codevs1269(匈牙利游戏)
1269 匈牙利游戏 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description ...
- C++之路进阶——优先队列优化最短路径算法(dijkstra)
一般的dijkstra算法利用贪心的思想,每次找出最短边,然后优化到其他点的的距离,我们还采用贪心思路,但在寻找最短边进行优化,之前是双重for循环,现在我们用优先队列来实现. 代码解释: //样例程 ...
- 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 三维用树状数 ...
- C++之路进阶——HDU1880(魔咒词典)
---恢复内容开始--- New~ 欢迎参加2016多校联合训练的同学们~ 魔咒词典 Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 3 ...
随机推荐
- 【Java 基础篇】【第四课】初识类
看看Java中如何定义一个类,然后用来调用的,这个比较简单,直接看代码吧. 我发现的类和C++不一样的地方: 1.Java中类定义大括号后没有分号: 2.好像没有 public.private等关键字 ...
- C# 判断字符串是否为日期格式
判断字符串内容是否为日期格式,并返回一个日期变量 string str; DateTime dtTime; if (DateTime.TryParse(str, out dtTime)) { //st ...
- JSON格式解析和libjson使用简介(关于cjson的使用示例)
JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...
- Wordpress更改后台地址
wordpress默认的后台地址是 xx/wp-admin 或xx/wp-login.php ,谁都知道感觉很不安全, 方法一:使用插件 通过插件在地址上加上只有你知道的参数才能访问 1.后台搜索插 ...
- Magento SSH 下载安装
http://www.magentocommerce.com/wiki/1_-_installation_and_configuration/installing_magento_via_shell_ ...
- sqlserver 视图能否有变量
不能,sqlserver 视图一般不能有变量,也不能带存储过程
- imx6 otg host support
本文记录添加imx6 otg host支持的过程. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6108560.html https://communi ...
- gulp教程
1. http://www.tuicool.com/articles/FJVNZf 2.http://www.ydcss.com/archives/18 3.手动创建package.json: 如:c ...
- synchronized锁自旋
http://www.jianshu.com/p/5dbb07c8d5d5 原理 通常说的synchronized在方法或块上加锁,这里的锁就是对象锁(当然也可以在类上面),或者叫重量锁,在JVM中又 ...
- 小白教你玩转php的闭包
php5.3有一个非常赞的新特性,那就是支持匿名函数(闭包).匿名函数可用于动态创建函数,并保存到一个变量中.举个栗子: $func = function(){ exit('Hello world!! ...