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 ...
随机推荐
- Nginx return 关键字配置小技巧
Nginx的return关键字属于HttpRewriteModule模块: 语法:return http状态码 默认值:无 上下文:server,location,if 该指令将结束执行直接返回htt ...
- WIN API 擦除所绘图像
COLORREF circle_color = RGB(0, 105, 255); //获取窗口DC HDC hdc = GetDC(hWnd_); //背景色透明 SetBkMode(hdc, TR ...
- 在sublime中使用less
高亮显示: 可以在Less文件中显示语法高亮,这样看起来会更舒服一些. 按下Ctrl+Shift+P调出命令面板:输入install调出Install Package选项并回车:输入less,选中并安 ...
- javac 错误: 编码GBK的不可映射字符
在java代码中有中文注释,使用javac编译时,出现编码报错. 错误: 编码GBK的不可映射字符 问题原因: 在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则 ...
- linux bq20z75 驱动
新的项目中使用到了电池.电池的guage使用TI的bq20z75.kernel的驱动中已经有bq20z75的驱动,只要稍加修改就可以使用. 参考链接 http://www.ti.com/lit/er/ ...
- NSNumber,NSValue和NSData
我们在编码中,很多时候需要将C里面原生的数据封装成对象,这样可以用NSDictionary或者NSArray来存取访问.尤其是一些做适配的情况下,这种封装是不可避免的.Objective-C提供了不少 ...
- python笔记 - day5
python笔记 - day5 参考: http://www.cnblogs.com/wupeiqi/articles/5484747.html http://www.cnblogs.com/alex ...
- 【转】C语言中标识符的作用域、命名空间、链接属性、生命周期、存储类型
参考网址:http://blog.csdn.net/zhanglianpin/article/details/41575849 绝对的经典.
- 微信公众平台开发(112) 自动更新微信access token
关键字:Memcache access_token 更新 存储 7200 本文介绍如何存储及更新 access token的方法. 一.Access Token access_token是公众号的全局 ...
- robotframework数据驱动框架
即将更新...............