思路:线段树+离散化。
离散化时注意特殊情况,如果两个数相差大于一,离散时也应该差1。比如 1 3 离散后应该为 1 2。
错因:
1.二分时出现错误,,zz  zz  Orz
2. if(tree[now].l==tree[now].r)  return ; 这句话漏了。   Orz          还要注意这句话的位置。
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define M 10000010
  6. #define MAXN 10010
  7. using namespace std;
  8. int t,n,m,tot,ans;
  9. int x[MAXN],y[MAXN];
  10. int pos[M],hash[MAXN*];
  11. struct nond{
  12. int l,r,flag;
  13. }tree[MAXN*];
  14. void build(int now,int l,int r){
  15. tree[now].l=l;tree[now].r=r;
  16. if(tree[now].l==tree[now].r){
  17. tree[now].flag=;return ;
  18. }
  19. int mid=(tree[now].l+tree[now].r)/;
  20. build(now*,l,mid);
  21. build(now*+,mid+,r);
  22. }
  23. void down(int now){
  24. tree[now*].flag=tree[now].flag;
  25. tree[now*+].flag=tree[now].flag;
  26. tree[now].flag=;
  27. }
  28. void change(int now,int l,int r,int x){
  29. if(tree[now].l==l&&tree[now].r==r){
  30. tree[now].flag=x;
  31. return ;
  32. }
      if(tree[now].flag==x) return ;
  33. if(tree[now].flag) down(now);
  34. int mid=(tree[now].l+tree[now].r)/;
  35. if(r<=mid) change(now*,l,r,x);
  36. else if(l>mid) change(now*+,l,r,x);
  37. else{ change(now*,l,mid,x);change(now*+,mid+,r,x); }
  38. }
  39. void query(int now){
  40. if(tree[now].flag){
  41. if(!pos[tree[now].flag]) ans++;
  42. pos[tree[now].flag]=;return ;
  43. }
  44. if(tree[now].l==tree[now].r) return ;
  45. int mid=(tree[now].l+tree[now].r)/;
  46. query(now*);query(now*+);
  47. }
  48. int findhash(int now){
  49. int l=,r=tot;
  50. while(l<=r){
  51. int mid=(l+r)/;
  52. if(hash[mid]<now) l=mid+;
  53. else r=mid-;
  54. }
  55. return l;
  56. }
  57. int main(){
  58. scanf("%d",&t);
  59. while(t--){
  60. scanf("%d",&n);ans=;
  61. for(int i=;i<=n;i++){
  62. scanf("%d%d",&x[i],&y[i]);
  63. pos[++m]=x[i];pos[++m]=y[i];
  64. }
  65. sort(pos+,pos++m);
  66. m=unique(pos+,pos++m)-(pos+);
  67. hash[++tot]=pos[];
  68. for(int i=;i<=m;i++){
  69. if(pos[i]-pos[i-]>) hash[++tot]=pos[i-]+;
  70. hash[++tot]=pos[i];
  71. }
  72. memset(pos,,sizeof(pos));
  73. build(,,tot);
  74. for(int i=;i<=n;i++){
  75. int l=findhash(x[i]);
  76. int r=findhash(y[i]);
  77. change(,l,r,i);
  78. }
  79. query();printf("%d\n",ans);
  80. m=;tot=;memset(pos,,sizeof(pos));
  81. }
  82. }

D - Mayor's posters的更多相关文章

  1. POJ 2528 Mayor's posters

    Mayor's posters Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub ...

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

    Mayor's posters 转载自:http://blog.csdn.net/winddreams/article/details/38443761 [题目链接]Mayor's posters [ ...

  3. poj 2528 Mayor's posters(线段树+离散化)

    /* poj 2528 Mayor's posters 线段树 + 离散化 离散化的理解: 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用线段树求解的话,很明显 ...

  4. POJ 2528 Mayor's posters(线段树/区间更新 离散化)

    题目链接: 传送门 Mayor's posters Time Limit: 1000MS     Memory Limit: 65536K Description The citizens of By ...

  5. Mayor's posters(线段树+离散化POJ2528)

    Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 51175 Accepted: 14820 Des ...

  6. poj2528 Mayor's posters(线段树之成段更新)

    Mayor's posters Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 37346Accepted: 10864 Descr ...

  7. POJ 2528 Mayor's posters(线段树区间染色+离散化或倒序更新)

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

  8. poj-----(2528)Mayor's posters(线段树区间更新及区间统计+离散化)

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

  9. Poj 2528 Mayor's posters 分类: Brush Mode 2014-07-23 09:12 84人阅读 评论(0) 收藏

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

  10. POJ 2528 Mayor’s posters

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

随机推荐

  1. Android内存解析(二)— 详解内存,内部存储和外部存储

    总述 觉得十分有必要搞清楚内存,内部存储和外部存储的区别,还有我们在开发中真正将数据存在了手机的哪儿. 先提一个问题:手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据? ...

  2. bzoj 1556 墓地秘密 —— 状压DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1556 预处理出两个障碍四个方向之间的距离(转弯次数),就可以状压DP了: 但预处理很麻烦.. ...

  3. bzoj 1053 [ HAOI 2007 ] 反素数ant ——暴搜

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1053 试图打表找规律,但无果... 看TJ了,暴搜: 注意参数 w 是 long long. ...

  4. A. Jeff and Digits(cf)

    A. Jeff and Digits time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  5. bzoj2287【POJ Challenge】消失之物(退背包)

    2287: [POJ Challenge]消失之物 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 657  Solved: 382[Submit][S ...

  6. go并发编程 WaitGroup, Mutex

    1.背景 记录一下,方便后续写代码直接使用. 需要注意几点: chan 默认支持多协程工作,不需要加锁. 其他变量操作需要使用锁保护(map多协程并发写会panic, 并且无法捕获). 启动gorou ...

  7. CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业基于微信公众号、小程序实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、等各种业务需求。

    **可以快速二次开发的开源小程序商城系统源码**源码开源地址:https://github.crmeb.net/u/LXT 项目介绍: CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业 ...

  8. HTML 打印 换页

    打印 HTML 无法强制换页其实是一件很令人困扰的事,要达到这个功能其实可以透过 CSS 的 Pagebreak 来处理. 强制分页有大概只有二种用的到: { page-break-after: al ...

  9. 2015 多校赛 第五场 1010 (hdu 5352)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5352 看题看得心好累. 题目大意: 给出 n 个点,依次执行 m 次操作:输入“1 x”时,表示将与 ...

  10. 数组中hashCode就是内存地址,以及汉字幻化为16进制或10进制

    int[] arr4={1,2,3,4,5}; System.out.println("arr4: "+arr4); System.out.println("arr4.h ...