坑:

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

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

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

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

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

  1. //By SiriusRen
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6. #define N 22222
  7. int cases,n,xx[N],yy[N],q[N],u,ans,vis[N];
  8. struct Tree{int l,r,cover;}tree[N*4];
  9. void build(int l,int r,int pos){
  10. tree[pos].l=q[l],tree[pos].r=q[r],tree[pos].cover=0;
  11. if(r==l)return;
  12. int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
  13. build(l,mid,lson),build(mid+1,r,rson);
  14. }
  15. void push_down(int pos){
  16. tree[pos<<1].cover=tree[pos<<1|1].cover=tree[pos].cover;
  17. tree[pos].cover=0;
  18. }
  19. void insert(int l,int r,int pos,int L,int R,int id){
  20. if(tree[pos].l>=L&&tree[pos].r<=R){
  21. tree[pos].cover=id;return;
  22. }
  23. if(tree[pos].cover)push_down(pos);
  24. int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
  25. if(tree[lson].r>=R)insert(l,mid,lson,L,R,id);
  26. else if(tree[rson].l<=L)insert(mid+1,r,rson,L,R,id);
  27. else insert(l,mid,lson,L,R,id),insert(mid+1,r,rson,L,R,id);
  28. }
  29. void query(int l,int r,int pos){
  30. if(tree[pos].cover){if(!vis[tree[pos].cover])vis[tree[pos].cover]=1,ans++;return;}
  31. if(l==r)return;
  32. int mid=(l+r)>>1,lson=pos<<1,rson=pos<<1|1;
  33. query(l,mid,lson),query(mid+1,r,rson);
  34. }
  35. int main(){
  36. scanf("%d",&cases);
  37. while(cases--){
  38. memset(vis,0,sizeof(vis)),ans=0;
  39. scanf("%d",&n);
  40. for(int i=1;i<=n;i++){
  41. scanf("%d%d",&xx[i],&yy[i]);
  42. q[i*2-1]=xx[i],q[i*2]=yy[i];
  43. }
  44. sort(q+1,q+1+n*2);
  45. u=unique(q+1,q+1+n*2)-q-1;
  46. build(1,u,1);
  47. for(int i=1;i<=n;i++){
  48. insert(1,u,1,xx[i],yy[i],i);
  49. }
  50. query(1,u,1);
  51. printf("%d\n",ans);
  52. }
  53. }

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. github上Devstack的一些变动,截至8.20

    从github下直接clone下来的代码在执行之前须要对一些文件进行改动,否则会出现关于REQUIREMENTS的错误 说明:代码前边是"-"号的,须要删除,代码前边是" ...

  2. Python中常见的文件对象内建函数

    文件对象内建方法列表 文件对象的方法 操作 file.close() 关闭文件 file.fileno() 返回文件的描写叙述符(file descriptor.FD,整数值) file.flush( ...

  3. ios修改了coredata数据结构后,更新安装会闪退

    如果iOS App 使用到CoreData,并且在上一个版本上有数据库更新(新增表.字段等操作),那在覆盖安装程序时就要进行CoreData数据库的迁移,具体操作如下: 1.选中你的mydata.xc ...

  4. 16.boost图深度优先遍历DFS

    #include <iostream> #include <boost/config.hpp> //图(矩阵实现) #include <boost/graph/adjac ...

  5. xBIM 基础01 简介

    系列目录    [已更新最新开发文章,点击查看详细]  一.xBIM 简介 BIM(Building Information Modelling)建筑信息模型,xBIM(eXtensible Buil ...

  6. javaEE的开发模式

    1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model1的弊端:随着业务复杂性 ...

  7. XManager远程Linux 安装Oracle 图形化界面xstart解决方法

    一.安装Oracle_11g_R21.安装所必要的软件包:(CentOS)参见官方文档-rw-r--r--. 1 oracle oinstall 1358454646 Feb  5 22:57 p10 ...

  8. codeforces 493 D Vasya and Chess【 博弈 】

    题意:给出n*n的棋盘,白方在(1,1),黑方在(1,n)处,每一步可以上下左右对角线走,哪个先抓到另一个,则它获胜 可以画一下,发现n是奇数的时候,白方先走,无论它怎么走,黑方和它走对称的,黑方都一 ...

  9. 模板层 Template

    每一个 Web 框架都需要一种很便利的方法用于动态生成 HTML 页面. 最常见的做法是使用模板. 模板包含所需 HTML 页面的静态部分,以及一些特殊的模版语法,用于将动态内容插入静态部分. 说白了 ...

  10. CentOS 6.9 CentOS 7.4 自动安装系统 kickstart

    通过ks文件 实现 CentOS 6.9 & 7.4 自动安装系统 环境: VMware 14.0 Pro版 光盘镜像: CentOS-6.9-x86_64-minimal.iso ks文件生 ...