花儿朵朵

时间限制:1000 ms  |  内存限制:65535 KB
难度:5

描述
春天到了,花儿朵朵盛开,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——花儿朵朵——【离散化、线段树插线问点】相关推荐

  1. 850. 矩形面积 II:扫描线+离散化+线段树

    Difficulty: hard 标签: 扫描线, 离散化, 线段树 题目链接 力扣 题目解析 面试代码 /** x轴方向使用扫描线,y轴方向使用线段树维护扫描线的长度和每个区间覆盖的次数.由于y轴方 ...

  2. poj/OpenJ_Bailian - 2528 离散化+线段树

    传送门:http://bailian.openjudge.cn/practice/2528?lang=en_US //http://poj.org/problem?id=2528 题意: 给你n长海报 ...

  3. 【BZOJ1645】[Usaco2007 Open]City Horizon 城市地平线 离散化+线段树

    [BZOJ1645][Usaco2007 Open]City Horizon 城市地平线 Description Farmer John has taken his cows on a trip to ...

  4. [牛客网#35D 树的距离]离散化+线段树合并

    [牛客网#35D 树的距离]离散化+线段树合并 分类:Data Structure SegMent Tree Merge 1. 题目链接 [牛客网#35D 树的距离] 2. 题意描述 wyf非常喜欢树 ...

  5. HDOJ-6681(离散化+线段树)

    Rikka With Cake HDOJ-6681 最终的答案为射线的交点数加一.当然,我们也可以证明.证明需要用到欧拉公式 V−E+F=2 V-E+F=2V−E+F=2 .设射线的交点共 c cc ...

  6. Mayor's posters POJ - 2528 (离散化+线段树)

    题意: 在1~10000000这个区间中读取n个海报的区间信息,后面的海报会覆 盖前面的海报,问最后能看到几张海报.(本题是一道bug题下面会提) 题目: The citizens of Byteto ...

  7. CF803G-Periodic RMQ Problem【离散化,线段树,ST表】

    正题 题目链接:https://www.luogu.com.cn/problem/CF803G 题目大意 一个长度为nnn的序列aaa复制kkk份连接,要求支持 区间赋值 区间查询最小值 n,q∈[1 ...

  8. 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 ...

  9. 【BZOJ4653】区间,离散化+线段树

    Time:2016.08.09 Author:xiaoyimi 转载注明出处谢谢 传送门 思路: 当时打同步赛的时候 花了3h去做T3提答 大概玩了50分 回来看T1竟然是懵逼状态-- 想了一会,满脑 ...

最新文章

  1. Cordova插件中JavaScript代码与Java的交互细节介绍
  2. vue实例属性之el,template,render
  3. string 找出所有数字 index_发现规律,解决整数转罗马数字
  4. LeetCode 106. 已知中序后序 求二叉树
  5. 新鲜出炉!393本SCI杂志2020影响因子预测
  6. SL项目创建失败_提示安装SDK
  7. endnotex8与9的区别_下载安装EndnoteX8或EndnoteX9,建立数据库并以自己的名字命名。...
  8. Serializable与serialVersionUID的作用
  9. python的hello world
  10. python 物理引擎 摩擦力_为什么单机游戏中的碰撞很不真实?物理引擎真的很难做到和现实一样吗?...
  11. fatal: unable to auto-detect email address (got ‘...@...(none)‘)
  12. 三进制计算机_三进制会取代二进制计算机吗?
  13. [转帖]16nm国内最先进 兆芯展示x86 KX-6000八核处理器
  14. 用JS通过新浪天气API接口获取天气
  15. 五一劳动节,微信公众号图文应该怎样排版?
  16. 制造业ERP系统是什么?制造业ERP软件系统有哪些功能
  17. 失眠脑子一直在想事情,试试这些高质量睡眠小妙招
  18. jython podcast cool isnt't it?
  19. 20220517 Python 制作一个儿童学习软件 (附源码和软件下载) 包含语音合成 视频播放 pyqt pptsx3 Qmovie request pygame 音频播放
  20. luncene.NET 实现全文检索,模糊搜索

热门文章

  1. [UVA1374]Power Calculus【迭代加深】
  2. python︱用asyncio、aiohttp实现异步及相关案例
  3. Python的操作符?
  4. [Flink]Flink的window介绍
  5. 想开公司没钱租用办公地,注册地址怎么办?
  6. 转:全栈工程师的知识栈列表
  7. [WebKit]浏览器的加载与页面性能优化
  8. mvc:view-controller
  9. Java自定义Annotation方法
  10. os10.10上versions崩溃的问题解决