POJ 2528 Mayor's posters 线段树+离散化
来源:互联网 发布:超级基因优化液第二部 编辑:程序博客网 时间:2024/06/14 03:28
大概题意:城市里要竞选市长,然后在一块墙上可以贴海报为自己拉票,每个人可以贴连续的一块区域,后来帖的可以覆盖前面的,问到最后一共可以看到多少张海报。
刚学的离散化姿势,vector+unique去重,然后lower_bound查找下标...离散化就是只记录出现过的端点..附上弱渣代码:
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<set>#include<vector>#include<iterator>#include<map>using namespace std;#define LL long long#define N 100007int l[N],r[N];struct data{ int l,r,cover;}data[N];map<int,int>mp;void build(int l,int r,int k){ data[k].l=l; data[k].r=r; data[k].cover=0; if(l==r) { return; } int mid=(l+r)/2; build(l,mid,k*2); build(mid+1,r,k*2+1);}void updata(int l,int r,int k,int x){ if(data[k].l==l&&data[k].r==r) { data[k].cover=x; return ; } if(data[k].cover!=0) { data[k*2].cover=data[k*2+1].cover=data[k].cover; data[k].cover=0; } int mid=(data[k].l+data[k].r)/2; if(r<=mid) updata(l,r,k*2,x); else if(l>mid) updata(l,r,k*2+1,x); else { updata(l,mid,k*2,x); updata(mid+1,r,k*2+1,x); }}int query(int k){ int ans=0; if(data[k].cover!=0) { if(mp[data[k].cover]==0) { ans++; mp[data[k].cover]=1; } } else { ans+=query(k*2); ans+=query(k*2+1); } return ans;}int main(){ int t; scanf("%d",&t); while(t--) { mp.clear(); vector<int> v; vector<int>::iterator it; int n; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d %d",&l[i],&r[i]); v.push_back(l[i]); v.push_back(r[i]); } sort(v.begin(),v.end()); it=unique(v.begin(),v.end()); v.erase(it,v.end()); int k=v.size(); build(1,k,1); for(int i=1;i<=n;i++) { int x=lower_bound(v.begin(),v.end(),l[i])-v.begin(); int y=lower_bound(v.begin(),v.end(),r[i])-v.begin(); updata(x+1,y+1,1,i); } int ans=query(1); printf("%d\n",ans); } return 0;}
0 0
- 离散化+线段树 POJ 2528 (Mayor's posters)
- POJ 2528 Mayor's posters(离散化+线段树)
- poj 2528 Mayor's posters 离散化 线段树
- POJ 2528 Mayor's posters 线段树+离散化
- poj 2528 Mayor's posters 线段树+离散化
- POJ 2528 Mayor's posters (线段树+离散化)
- POJ 2528 Mayor's posters(离散化+线段树)
- POJ 2528 Mayor's posters 线段树+离散化
- POJ 2528 Mayor's posters(线段树+离散化)
- POJ 2528 Mayor's posters (线段树+离散化)
- poj 2528 Mayor's posters(线段树+离散化)
- POJ 2528 Mayor's posters 线段树+离散化
- poj - 2528 - Mayor's posters 线段树+离散化
- poj 2528 Mayor's posters 线段树+离散化
- poj 2528 Mayor's posters(离散化+线段树)
- POJ 2528 Mayor's posters (线段树+离散化)
- poj 2528 Mayor's posters(离散化+线段树)
- POJ 2528 Mayor's posters 离散化线段树
- Online Object Tracking: A Benchmark
- 学习计算机方法二
- 8个值得关注的SQL-on-Hadoop框架
- 多线程断点续传实践
- 仿支付宝/微信的密码输入框效果GridPasswordView解析
- POJ 2528 Mayor's posters 线段树+离散化
- POJ 2492 A Bug's Life(并查集+逻辑关系)
- FZU1150 Farmer Bill's Problem
- 黑马程序员——正则表达式2:功能演示
- 基于AbstractRoutingDataSource的动态切换数据库
- FZU1171 Hard to Believe, but True!
- scala柯里化函数
- Jenkins API curl创建job、执行构建
- Find The Multiple