POJ - 2528 线段树 + 离散化
来源:互联网 发布:软件测试缺陷管理工具 编辑:程序博客网 时间:2024/06/02 02:14
#include<iostream>#include<cstdio>#include<algorithm>#include<set>using namespace std;const int maxn = 1e5;int rr[maxn+10];int ll[maxn+10];int p[maxn+10];struct Nod{int va,q;}nod[(maxn << 2) + 10];int bs(int l,int r,int k){int ans = -1,mid;while(l <= r){mid = l + (r-l)/2;if(p[mid] >= k){ans = mid;r = mid-1;}else l = mid+1;}if(p[ans] == k) return ans;else return -1;}void build(int o,int l ,int r){nod[o].va = nod[o].q = 0;if(l == r) return ;int mid = l + (r - l)/2;build(o << 1,l,mid);build(o <<1|1,mid+1,r);}void pushdown(int o){if(nod[o].q){nod[o << 1].q = nod[o <<1|1].q = nod[o].q;nod[o << 1].va = nod[o <<1|1].va = nod[o].q;nod[o].q = 0;}}void updata(int o,int l,int r,int L,int R,int k){if(L <= l && r <= R){nod[o].va = nod[o].q = k;return ;}pushdown(o);int mid = l + (r - l)/2;if(L <= mid) updata(o << 1,l,mid,L,R,k);if(R > mid) updata(o << 1|1,mid+1,r,L,R,k);}int ans;void query(int o,int l,int r,int p){if(l == r && l == p){ans = nod[o].va;return ;}pushdown(o);int mid = l + (r - l)/2;if(p <= mid) query(o << 1,l,mid,p);if(p > mid) query(o << 1|1,mid+1,r,p);}int main(){int T;scanf("%d",&T);while(T --){set<int> S;int sz = 0;int n;scanf("%d",&n);int t = 0;for(int i = 1;i <= n;++i){scanf("%d%d",&rr[i],&ll[i]);S.insert(rr[i]);if(S.size() > sz) {sz = S.size();p[++t] = rr[i];}S.insert(ll[i]);if(S.size() > sz) {sz = S.size();p[++t] = ll[i];}}sort(p+1,p+1+t);for(int i = 1;i <= n;++i){rr[i] = bs(1,t,rr[i]);ll[i] = bs(1,t,ll[i]);}build(1,1,t);for(int i = 1;i <= n;++i){updata(1,1,t,rr[i],ll[i],i);}set<int> S1;sz = 0;for(int i = 1;i <= t;++i){query(1,1,t,i);S1.insert(ans); }printf("%d\n",S1.size());}return 0;}
0 0
- poj 2528 线段树+离散化
- POJ 2528 (线段树+离散化)
- poj 2528 (线段树+离散化)
- poj~2528~离散化线段树
- POJ 2528 线段树+离散化
- Poj 2528 线段树+离散化
- 线段树 poj 2528 离散化处理
- poj 2528 线段树 离散化
- POJ 2528 离散化+线段树染色
- poj 2528 坐标离散化+线段树
- POJ 2528 (线段树 离散化)
- POJ 2528 线段树+离散化
- POJ 2528 QAQ线段树+离散化
- poj 2528--经典线段树+离散化
- poj 2528 离散化+线段树
- POJ 2528 线段树+离散化~
- poj-2528(线段树+离散化)
- poj 2528 线段树离散化
- TeamTalk源码分析之login_server
- VS编程之查看数组信息
- liunx下查看tomcat是否启动/系统日志等
- Java并发编程的艺术(九)——批量获取多条线程的执行结果
- c++ 引用 底层实现机制
- POJ - 2528 线段树 + 离散化
- Xcode8之过滤打印日志
- MFC 修改icon exe图标
- ubuntu16.04 安装composer和 laravel
- 理解jquery的$.extend()、$.fn和$.fn.extend()
- HttpClient和HttpURLConnection的区别
- js和php 互相传值 参数
- C#生成随机验证码例子
- CornerStone的使用