poj 2528 Mayor's posters 线段树

来源:互联网 发布:淘宝天猫超市有客服吗 编辑:程序博客网 时间:2024/05/29 06:44

题目链接:poj 2528

        有一面长度为1e7的墙,给你N张海报,给定他们张贴的起始位置,按给出的顺序张贴,问最后能看到多少张海报。看到一部分也算看到。

        线段树基本题,可以去网上搜一下线段树的教程

/****************************************************** * File Name:   2528.cpp * Author:      kojimai * Creater Time:2014年08月26日 星期二 18时18分11秒******************************************************/#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<iostream>using namespace std;#define FFF 10005struct nodes{int x,y;}p[FFF];struct seg{int l,r,c;}node[FFF*10];struct order{int x,num;}s[FFF*2];bool cmp(order a,order b){return a.x<b.x;}void buildtree(int l,int r,int num){node[num].l=l;node[num].r=r;node[num].c=0;if(l==r)return;int mid=(l+r)/2;buildtree(l,mid,num*2);buildtree(mid+1,r,num*2+1);}void solve(int l,int r,int num,int c){//cout<<"nodel="<<node[num].l<<" noder="<<node[num].r<<endl;if(node[num].l==l&&node[num].r==r){node[num].c=c;//cout<<" l="<<l<<" r="<<r<<" c="<<node[num].c<<endl;return;}if(node[num].c>0&&node[num].r>node[num].l){node[num*2].c=node[num].c;node[num*2+1].c=node[num].c;node[num].c=0;}//cout<<" l="<<l<<" r="<<r<<" c="<<node[num].c<<endl;if(node[num].l==node[num].r)return;int mid=(node[num].l+node[num].r)/2;if(mid>r){solve(l,r,num*2,c);}else if(mid<l){solve(l,r,num*2+1,c);}else{solve(l,mid,num*2,c);solve(mid+1,r,num*2+1,c);}return;}int ans;bool vis[FFF];void search(int num){if(node[num].c){if(!vis[node[num].c]){ans++;vis[node[num].c]=true;}return;}else{if(node[num].r>node[num].l){search(num*2);search(num*2+1);}}return;}int main(){int keng;scanf("%d",&keng);while(keng--){int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d%d",&p[i].x,&p[i].y);s[i*2].x=p[i].x;s[i*2].num=-i-1;s[i*2+1].x=p[i].y;s[i*2+1].num=i+1;}sort(s,s+n*2,cmp);int cnt=0,tmp=-1;for(int i=0;i<n*2;i++){if(tmp!=s[i].x){tmp=s[i].x;cnt++;}if(s[i].num<0)p[-s[i].num-1].x=cnt;elsep[s[i].num-1].y=cnt;}buildtree(1,cnt,1);for(int i=0;i<n;i++){solve(p[i].x,p[i].y,1,i+1);}ans=0;search(1);memset(vis,false,sizeof(vis));cout<<ans<<endl;}return 0;}


0 0
原创粉丝点击