nyoj 600——花儿朵朵——【离散化、线段树插线问点】
花儿朵朵
- 描述
- 春天到了,花儿朵朵盛开,hrdv是一座大花园的主人,在他的花园里种着许多种鲜花,每当这个时候,就会有一大群游客来他的花园欣赏漂亮的花朵,游客们总是会询问,某个时间有多少种花儿同时在盛开着?hrdv虽然知道每种花儿的开花时间段,但是他不能很快的答出游客的问题,你能编写一个程序帮助他吗?
- 输入
- 第一行有个整数t,表示有t组测试数据,每组测试数据第一行为两个整数n,m(0<n<100000,0<m<100000);随后有n行,每一行有两个整数x,y(0<x<y<1000000000),表示这一种花的盛开时间是从x到y;随后有m行,每行有一个整数,代表游客询问的时间。
- 输出
- 对于每次游客的询问,输出一个整数在单独的一行,表示这个时间盛开的花有多少种。
- 样例输入
-
2 1 1 5 10 4 2 3 1 4 4 8 1 4 6
- 样例输出
-
0 1 2 1 解题思路:先把所给的值都离散化后再操作。然后就是插线问点了。
#include<bits/stdc++.h> using namespace std; const int maxn=120000; #define mid (L+R)/2 #define lson rt*2,L,mid #define rson rt*2+1,mid+1,R int a[maxn*2],aa[maxn*2],a_[maxn*2]; int x[maxn*2],y[maxn*2],q[maxn]; int f_num[maxn*4]; int discretization(int *tm,int l,int r,int key){int m; //离散化while(l<=r){m=(l+r)/2;if(tm[m]<key){l=m+1;}else if(tm[m]>key){r=m-1;}else{return m;}} } void update(int rt,int L,int R,int l_ran,int r_ran){if(l_ran<=L&&R<=r_ran){ //区间更新f_num[rt]+=1;return ;}if(l_ran<=mid){update(lson,l_ran,r_ran);}if(r_ran>mid){update(rson,l_ran,r_ran);} } void PushDown(int rt){f_num[rt*2]+=f_num[rt];f_num[rt*2+1]+=f_num[rt];f_num[rt]=0; } int query(int rt,int L,int R,int v){ //单点查询if(L==R){ return f_num[rt];}if(f_num[rt]!=0)PushDown(rt);if(mid>=v){return query(lson,v);}if(mid<v){return query(rson,v);} } int main(){int t;scanf("%d",&t);while(t--){memset(f_num,0,sizeof(f_num));int n,m,tmp;scanf("%d%d",&n,&m);int num_a=n*2+m;for(int i=0;i<num_a;i++){scanf("%d",&tmp);a[i]=tmp;aa[i]=tmp;}sort(a,a+num_a);int num=0;a_[num++]=a[0];for(int i=1;i<num_a;i++){if(a[i]!=a[i-1]){a_[num++]=a[i];}}int num_x=0,num_y=0,num_q=0,nn=0;for(int i=0;i<n*2;i++){if(i%2==0){x[num_x++]=discretization(a_,0,num-1,aa[i])+1;if(nn<x[num_x-1]){nn=x[num_x-1];}}else{y[num_y++]=discretization(a_,0,num-1,aa[i])+1;if(nn<y[num_y-1]){nn=y[num_y-1];}}}for(int i=n*2;i<num_a;i++){q[num_q++]=discretization(a_,0,num-1,aa[i])+1;}for(int i=0;i<n;i++){update(1,1,nn,x[i],y[i]);}for(int i=0;i<num_q;i++){int ans=query(1,1,nn,q[i]);printf("%d\n",ans);}}return 0; }
转载于:https://www.cnblogs.com/chengsheng/p/4470744.html
nyoj 600——花儿朵朵——【离散化、线段树插线问点】相关推荐
- 850. 矩形面积 II:扫描线+离散化+线段树
Difficulty: hard 标签: 扫描线, 离散化, 线段树 题目链接 力扣 题目解析 面试代码 /** x轴方向使用扫描线,y轴方向使用线段树维护扫描线的长度和每个区间覆盖的次数.由于y轴方 ...
- poj/OpenJ_Bailian - 2528 离散化+线段树
传送门:http://bailian.openjudge.cn/practice/2528?lang=en_US //http://poj.org/problem?id=2528 题意: 给你n长海报 ...
- 【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线 离散化+线段树
[BZOJ1645][Usaco2007 Open]City Horizon 城市地平线 Description Farmer John has taken his cows on a trip to ...
- [牛客网#35D 树的距离]离散化+线段树合并
[牛客网#35D 树的距离]离散化+线段树合并 分类:Data Structure SegMent Tree Merge 1. 题目链接 [牛客网#35D 树的距离] 2. 题意描述 wyf非常喜欢树 ...
- HDOJ-6681(离散化+线段树)
Rikka With Cake HDOJ-6681 最终的答案为射线的交点数加一.当然,我们也可以证明.证明需要用到欧拉公式 V−E+F=2 V-E+F=2V−E+F=2 .设射线的交点共 c cc ...
- Mayor's posters POJ - 2528 (离散化+线段树)
题意: 在1~10000000这个区间中读取n个海报的区间信息,后面的海报会覆 盖前面的海报,问最后能看到几张海报.(本题是一道bug题下面会提) 题目: The citizens of Byteto ...
- CF803G-Periodic RMQ Problem【离散化,线段树,ST表】
正题 题目链接:https://www.luogu.com.cn/problem/CF803G 题目大意 一个长度为nnn的序列aaa复制kkk份连接,要求支持 区间赋值 区间查询最小值 n,q∈[1 ...
- Codeforces Round #345 (Div. 1) D. Zip-line 上升子序列 离线 离散化 线段树
D. Zip-line 题目连接: http://www.codeforces.com/contest/650/problem/D Description Vasya has decided to b ...
- 【BZOJ4653】区间,离散化+线段树
Time:2016.08.09 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 当时打同步赛的时候 花了3h去做T3提答 大概玩了50分 回来看T1竟然是懵逼状态-- 想了一会,满脑 ...
最新文章
- Cordova插件中JavaScript代码与Java的交互细节介绍
- vue实例属性之el,template,render
- string 找出所有数字 index_发现规律,解决整数转罗马数字
- LeetCode 106. 已知中序后序 求二叉树
- 新鲜出炉!393本SCI杂志2020影响因子预测
- SL项目创建失败_提示安装SDK
- endnotex8与9的区别_下载安装EndnoteX8或EndnoteX9,建立数据库并以自己的名字命名。...
- Serializable与serialVersionUID的作用
- python的hello world
- python 物理引擎 摩擦力_为什么单机游戏中的碰撞很不真实?物理引擎真的很难做到和现实一样吗?...
- fatal: unable to auto-detect email address (got ‘...@...(none)‘)
- 三进制计算机_三进制会取代二进制计算机吗?
- [转帖]16nm国内最先进 兆芯展示x86 KX-6000八核处理器
- 用JS通过新浪天气API接口获取天气
- 五一劳动节,微信公众号图文应该怎样排版?
- 制造业ERP系统是什么?制造业ERP软件系统有哪些功能
- 失眠脑子一直在想事情,试试这些高质量睡眠小妙招
- jython podcast cool isnt't it?
- 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放
- luncene.NET 实现全文检索,模糊搜索