线段树之POJ2528 Mayor's posters
2015-08-10 13:50
288 查看
成段替换。
个人认为这题重点是离散化。渣渣也是参考别人题解的,所以不班门弄斧了。
个人认为这题重点是离散化。渣渣也是参考别人题解的,所以不班门弄斧了。
#include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> #include <limits.h> #include <math.h> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <map> #include <string> #include <sstream> using namespace std; #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; const double pi=4.0*atan(1.0); const int MAXN=100005; int add[MAXN<<2]; struct node{ int x,y; }; node poster[MAXN]; int lisan[MAXN<<2]; int biaoji[MAXN]; void PushDown(int rt,int len) { if(add[rt]) { add[rt<<1]=add[rt]; add[rt<<1|1]=add[rt]; add[rt]=0; } } void build(int l,int r,int rt) { add[rt]=0; if(l==r) { return ; } int m=(l+r)>>1; build(lson); build(rson); } void update(int L,int R,int c,int l,int r,int rt) { if(L<=l && r<=R) { add[rt]=c; return ; } PushDown(rt,r-l+1); int m=(l+r)>>1; if(L<=m) update(L,R,c,lson); if(m<R) update(L,R,c,rson); } int ans; void query(int l,int r,int rt) { if(add[rt]) { if(biaoji[add[rt]]==0) { ans++; biaoji[add[rt]]=1; } return ; } if(l==r) return ; int m=(l+r)>>1; query(lson); query(rson); } int lower(int x,int y,int k) { int m; while(x<y) { m=(x+y)/2; if(lisan[m]>=k) //改成<=可以求递减序列 y=m; else x=m+1; } return x; } int main() { int n,m; int i,j,k; int x,y; int T; while(scanf("%d",&T)!=EOF) { while(T--) { scanf("%d",&n); k=0; for(i=1;i<=n;i++) { scanf("%d%d",&poster[i].x,&poster[i].y); lisan[k++]=poster[i].x; lisan[k++]=poster[i].y; } sort(lisan,lisan+k); k=unique(lisan,lisan+k)-lisan; for(i=k-1;i>0;i--) { if(lisan[i]-lisan[i-1]>1) { lisan[k++]=lisan[i]-1; } } sort(lisan,lisan+k); memset(biaoji,0,sizeof(biaoji)); build(1,k,1); for(i=1;i<=n;i++) { int nx=lower(0,k,poster[i].x); int ny=lower(0,k,poster[i].y); update(nx+1,ny+1,i,1,k,1); } ans=0; query(1,k,1); printf("%d\n",ans); } } return 0; }
相关文章推荐
- MVC,MVP 和 MVVM 的图示
- SqlServer 数据库/数据表 拆分(分布式)【转】
- Network
- leetcode 112 —— Path Sum
- springmvc配置
- NSThread
- 使用系统自带的ContentProvider查询联系人
- 无法定位序数 xxxx 与动态链接库 avcodec-55.dll上
- 死了都要try------哪些奋斗的程序猿
- 早期学习写壳代码
- HDU 4289 Control (最小割 拆点)
- 进入做Mvc项目的时候 返现某个文件夹下面css js png等静态文件都访问不了
- mvc actionresult 判断是否回发?
- Linux运维 第四阶段 (三) MySQL的SQL语句
- [Windows]_[初级]_[修改文件的创建时间-修改时间-访问时间]
- 线段树之HDU1698 Just a Hook
- Android 高仿微信实时聊天 基于百度云推送
- [Windows]_[初级]_[修改文件的创建时间-修改时间-访问时间]
- Hibernate中Criteria的完整用法
- DevExpress控件库---MarqueeProgressBarControl控件和ProgressBarControl控件