poj2528 (线段树+离散化)
来源:互联网 发布:非洲社交软件 编辑:程序博客网 时间:2024/06/05 13:22
本题有个小trick,就是离散化时相邻两个数相差大于1时,经过离散化就会使得两个数差为1.而在本题中这是有区别的,因为题目中的数表示单位长度,不是一个点,所以要在差大于1的两个数之间插入一个数,然后再离散化。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define maxn 80005#define lson l,m,rt<<1#define rson m+1,r,(rt<<1)|1int sign[4*maxn+1];void pushdown(int rt){ if( sign[rt] ) { sign[rt<<1] = sign[rt]; sign[rt<<1|1] = sign[rt]; sign[rt]=0; }}void build(int l,int r,int rt){ sign[rt]=0; if( l==r ) return; int m=(l+r)/2; build(lson); build(rson);}void update(int L,int R,int c,int l,int r,int rt){ if( L<=l && r<=R ) { sign[rt]=c; return; } pushdown(rt); int m=(l+r)/2; if( L<= m ) update(L,R,c,lson); if( R>m ) update(L,R,c,rson);}int query(int L,int R,int l,int r,int rt){ if( L<=l && r<=R ) { return sign[rt]; } pushdown(rt); int m=(l+r)/2; if( L <= m ) return query(L,R,lson); if( R>m ) return query(L,R,rson);}int main(){ int _,n,a[80005],i,j,h; int s[20005],e[20005]; int hash[80005]; scanf("%d",&_); while(_--) { scanf("%d",&n); j=1; memset(hash,0,sizeof(hash)); memset(sign,0,sizeof(sign)); for(i=1;i<=n;i++) { scanf("%d%d",s+i,e+i); a[j++]=s[i]; a[j++]=e[i]; } sort(a+1,a+j); h=2; for(i=2;i<j;i++) { if(a[i]!=a[i-1]) a[h++]=a[i]; } int k; k=h; for(i=2;i<h;i++) { if(a[i]-a[i-1] >= 2) a[k++]=a[i-1]+1; } sort(a+1,a+k); for(i=1;i<=n;i++) { s[i]= lower_bound(a+1,a+k,s[i]) - a + 1; e[i]= lower_bound(a+1,a+k,e[i]) - a + 1; } build(1,k,1); // 这个build可以不要,是多余的,因为它的作用就是memset了sign数组。 for(i=1;i<=n;i++) { update(s[i],e[i],i,1,k,1); } for(i=1;i<=k;i++) { hash[query(i,i,1,k,1)]=1; } int ans=0; for(i=1;i<=n;i++) ans+=hash[i]; printf("%d\n",ans); } return 0;}
- poj2528 (线段树+离散化)
- poj2528(线段树+离散化)
- poj2528(离散化+线段树)
- poj2528(线段树+离散化)
- poj2528 线段树+离散化
- poj2528线段树+离散化
- POJ2528 离散化线段树
- poj2528(线段树+离散化)
- poj2528 线段树 离散化
- poj2528离散化+线段树
- 线段树+离散化 poj2528
- poj2528 离散化+线段树
- POJ2528,线段树+离散化
- poj2528(线段树+离散化)
- poj2528线段树+离散化
- 线段树 离散化 poj2528
- poj2528(离散化+线段树)
- 离散化+线段树 poj2528
- Blocks 概念预览
- (一)win7(winxp)Eclipse安装Android ndkR7
- WAP协议研究笔记—彩信的传输
- SQL内 连接(只连接匹配的行)
- POJ 1862 Stripies (贪心)
- poj2528 (线段树+离散化)
- 直方图 density(密度)解释
- 根据rowid统计一个表占用了多少块
- Spring 依赖注入(DI)
- 网站封锁、翻墙、”hosts文件配置”大PK
- 解决ubuntu12.04pdf中文乱码问题
- Oralce SQL语言常用函数(四)转换函数
- 保存网络图片到本地
- 根据原图路径获得对应的缩略图