坑:

这道题的坐标轴跟普通的坐标轴是不一样的……

此题的坐标轴 标号是在中间的……

线段树建树的时候就不用[l,mid][mid,r]了(这样是错的)

直接[l,mid][mid+1,r]就OK了

Discuss里面的人们很纠结啊…….

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 22222
int cases,n,xx[N],yy[N],q[N],u,ans,vis[N];
struct Tree{int l,r,cover;}tree[N*4];
void build(int l,int r,int pos){
tree[pos].l=q[l],tree[pos].r=q[r],tree[pos].cover=0;
if(r==l)return;
int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
build(l,mid,lson),build(mid+1,r,rson);
}
void push_down(int pos){
tree[pos<<1].cover=tree[pos<<1|1].cover=tree[pos].cover;
tree[pos].cover=0;
}
void insert(int l,int r,int pos,int L,int R,int id){
if(tree[pos].l>=L&&tree[pos].r<=R){
tree[pos].cover=id;return;
}
if(tree[pos].cover)push_down(pos);
int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
if(tree[lson].r>=R)insert(l,mid,lson,L,R,id);
else if(tree[rson].l<=L)insert(mid+1,r,rson,L,R,id);
else insert(l,mid,lson,L,R,id),insert(mid+1,r,rson,L,R,id);
}
void query(int l,int r,int pos){
if(tree[pos].cover){if(!vis[tree[pos].cover])vis[tree[pos].cover]=1,ans++;return;}
if(l==r)return;
int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
query(l,mid,lson),query(mid+1,r,rson);
}
int main(){
scanf("%d",&cases);
while(cases--){
memset(vis,0,sizeof(vis)),ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&xx[i],&yy[i]);
q[i*2-1]=xx[i],q[i*2]=yy[i];
}
sort(q+1,q+1+n*2);
u=unique(q+1,q+1+n*2)-q-1;
build(1,u,1);
for(int i=1;i<=n;i++){
insert(1,u,1,xx[i],yy[i],i);
}
query(1,u,1);
printf("%d\n",ans);
}
}

POJ 2528 线段树的更多相关文章

  1. poj 2528(线段树+离散化) 市长的海报

    http://poj.org/problem?id=2528 题目大意是市长竞选要贴海报,给出墙的长度和依次张贴的海报的长度区间(参考题目给的图),问最后你能看见的海报有几张 就是有的先贴的海报可能会 ...

  2. poj 2528 线段树区间修改+离散化

    Mayor's posters POJ 2528 传送门 线段树区间修改加离散化 #include <cstdio> #include <iostream> #include ...

  3. poj 2528 线段树+离散化

    题意:在墙上贴一堆海报(只看横坐标,可以抽象成一线段),新海报可以覆盖旧海报.求最后能看到多少张海报 sol:线段树成段更新.铺第i张海报的时候更新sg[i].x~sg[i].y这一段为i. 然而坐标 ...

  4. POJ 2528 (线段树 离散化) Mayor's posters

    离散化其实就是把所有端点放在一起,然后排序去个重就好了. 比如说去重以后的端点个数为m,那这m个点就构成m-1个小区间.然后给这m-1个小区间编号1~m-1,再用线段树来做就行了. 具体思路是,从最后 ...

  5. poj 2528 线段树 离散化的小技巧

    题意:在墙上贴海报,海报可以互相覆盖,问最后可以看见几张海报思路:直接搞超时+超内存,需要离散化.离散化简单的来说就是只取我们需要的值来 用,比如说区间[1000,2000],[1990,2012] ...

  6. Mayor's posters POJ - 2528(线段树 + 离散化)

    Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 74745   Accepted: 21574 ...

  7. Mayor's posters POJ - 2528 线段树区间覆盖

    //线段树区间覆盖 #include<cstdio> #include<cstring> #include<iostream> #include<algori ...

  8. Mayor's posters POJ - 2528 线段树(离散化处理大数?)

    题意:输入t组数据,输入n代表有n块广告牌,按照顺序贴上去,输入左边和右边到达的地方,问贴完以后还有多少块广告牌可以看到(因为有的被完全覆盖了). 思路:很明显就是线段树更改区间,不过这个区间的跨度有 ...

  9. poj 2886 线段树+反素数

    Who Gets the Most Candies? Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 12744   Acc ...

随机推荐

  1. Detours改动段属性漏洞

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  2. python爬虫 分页获取图片并下载

    --刚接触python2天,想高速上手,就写了个爬虫,写完之后,成就感暴增,用起来顺手多了. 1.源代码 #coding=utf-8 import urllib import re class Pag ...

  3. 根据数据库表结构生成java类

    import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWrit ...

  4. android:异步任务asyncTask介绍及异步任务下载图片(带进度条)

    为什么要用异步任务? 在android中仅仅有在主线程才干对ui进行更新操作.而其他线程不能直接对ui进行操作 android本身是一个多线程的操作系统,我们不能把全部的操作都放在主线程中操作 .比方 ...

  5. $(window).load(function(){})跟$(document).ready(function(){})跟$(function(){})区别

    1.页面DOM加载完成 2.$(document).ready(function(){})  的简写是 $(function(){}) 执行 3.图片样式等所有HTML元素加载完毕 4.$(windo ...

  6. [JZOJ NOIP2018模拟10.20 A组]

    由于T3数据出锅,还不清楚自己的分数...估分150,前100已经拿到了,T3的50没拍过(写的就是暴力怎么拍),感觉很不稳 考试的时候就是特别的困,大概是因为早上在房间里腐败...腐败完了才睡觉 T ...

  7. 修改echarts环形图的牵引线及文字位置

    修改echarts环形图的牵引线及文字位置,下面代码及效果不仅如此,也包含了其它的效果哦.有问题可以留言. 根据echarts官方示例修改效果: 官方示例图: 修改效果图: 直接上代码:其它不多说. ...

  8. c# iTextSharp导出PDF

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Th ...

  9. 你不知道的JavaScript(五)内置对象模版

    尽管JavaScript中有对象的概念,但一般我们并不说JavaScript是面向对象的编程语言,因为它不具备面向对象的一些最基本特征. 在c++/Java等这些面向对象的编程语言中,我们要定义一个对 ...

  10. 002.ActiveMQ的安装

    本安装说明基于CentOS7.1的版本,其他版本也基本可以参考. 1. 安装JDK1.8 CentOS7.1版本安装时忘记是默认还是自己选中的安装了OpenJDK,也是1.8的版本,因为ActiveM ...