题意:

给出n个星星的坐标 x,y ,当存在其他星星的坐标x1,y1满足x>=x1&&y>=y1时 这个星星的等级就加1。

注意:

题中给的数据是有规律的 ,y是逐渐增加的 ,若y相等时x是逐渐增加的 。

思路:

~~怎么都没想到是线段树 ~~

因为当前给的坐标的yn 一定大于等于之前的y,那么只需要看之前有多少个小于xn 的坐标即可 (说白了就不用考虑y),这一步用线段树来实现:

对于每个xi 查询1到xi 的横坐标有多少个,那么怎么对x进行计数呢?对与每个xi 更新区间x->max(就是32000)进行加1操作 ,那么对于后面大于xi 的横坐标只需要单点查询它的xn 坐标 被加了多少次即可 ,即代码中的sum[o],就是i号星星的等级

上代码:

  1. //A code block
  2. #include<iostream>
  3. #include<stdio.h>
  4. using namespace std;
  5. int n,m,lazy[150005],sum[150005];/*区间最大值 不断加1*/
  6. void pushdown(int l,int r,int o)
  7. {
  8. if(lazy[o])
  9. {
  10. lazy[o<<1|1]+=lazy[o];
  11. lazy[o<<1]+=lazy[o];
  12. sum[o<<1|1]+=lazy[o];
  13. sum[o<<1]+=lazy[o];
  14. lazy[o]=0;
  15. }
  16. }
  17. void update(int x,int y,int l,int r,int o)
  18. {
  19. if(x<=l&&y>=r)
  20. {
  21. sum[o]++;
  22. lazy[o]++;
  23. return ;
  24. }
  25. pushdown(l,r,o);
  26. int mid=(l+r)>>1;
  27. if(x<=mid) update(x,y,l,mid,o<<1);
  28. if(y>mid) update(x,y,mid+1,r,o<<1|1);
  29. sum[o]=max(sum[o<<1],sum[o<<1|1]);
  30. return ;
  31. }
  32. int k=0;
  33. void query(int x,int y,int l,int r,int o)
  34. {
  35. if(x<=l&&y>=r)
  36. {
  37. k=max(sum[o],k);
  38. return ;
  39. }
  40. pushdown(l,r,o);
  41. int mid=(l+r)>>1;
  42. if(x<=mid) query(x,y,l,mid,o<<1);
  43. if(y>mid) query(x,y,mid+1,r,o<<1|1);
  44. return ;
  45. }
  46. int main()
  47. {
  48. while(~scanf("%d",&m))
  49. {
  50. int x,y,grade[15010],maxx=32005;
  51. for(int i=0;i<=15000;i++)
  52. grade[i]=0;
  53. for(int i=0;i<=150000;i++)
  54. lazy[i]=sum[i]=0;
  55. for(int i=1;i<=m;i++)
  56. {
  57. k=0;
  58. scanf("%d%d",&x,&y);
  59. x++,y++;
  60. query(1,x,1,maxx,1);
  61. grade[k]++;
  62. update(x,maxx,1,maxx,1);
  63. }
  64. for(int i=0;i<m;i++)
  65. printf("%d\n",grade[i]);
  66. }
  67. return 0;
  68. }
  69. var foo = 'bar';

(线段树 -星星等级)Stars POJ - 2352的更多相关文章

  1. 线段树 + 区间更新 + 模板 ---- poj 3468

    A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 59798   ...

  2. 线段树(成段更新) POJ 3468 A Simple Problem with Integers

    题目传送门 /* 线段树-成段更新:裸题,成段增减,区间求和 注意:开long long:) */ #include <cstdio> #include <iostream> ...

  3. 【树状数组】 poj 2352

    题意:给出n个平面二维坐标,对于每个坐标,如果这个坐标跟(0,0)形成的矩形内包含的点数为 k (包含边界,但不包含坐标本身),那么这个坐标就是 level k.输出level 0 - n-1的点数分 ...

  4. 线段树扫描线总结(POJ 1389)

    扫描线算是线段树的一个比较特殊的用法,虽然NOIP不一定会考,但是学学还是有用的,况且也不是很难理解. 以前学过一点,不是很透,今天算是搞懂了. 就以这道题为例吧:嘟嘟嘟 题目的意思是在一个二维坐标系 ...

  5. 【树状数组】POJ 2352 Stars

    /** * @author johnsondu * @time 2015-8-22 * @type Binary Index Tree * ignore the coordinate of y and ...

  6. Stars POJ - 2352

    Astronomers often examine star maps where stars are represented by points on a plane and each star h ...

  7. (线段树)Balanced Lineup --POJ --3264

    链接: 对于POJ老是爆,我也是醉了, 链接等等再发吧! http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82832#problem/G 只 ...

  8. 线段树(倒序操作):POJ 2828 Buy Tickets

    Buy Tickets   Description Railway tickets were difficult to buy around the Lunar New Year in China, ...

  9. 求矩形的周长(线段树+扫描线) Picture POJ - 1177

    题目链接:https://cn.vjudge.net/problem/POJ-1177 题目大意:求矩形外部的周长 具体思路:借用一下bin巨的一张图片. 我们按照y周从下往上的扫描线进行扫描,第一下 ...

随机推荐

  1. AI:拿来主义——预训练网络(一)

    我们已经训练过几个神经网络了,识别手写数字,房价预测或者是区分猫和狗,那随之而来就有一个问题,这些训练出的网络怎么用,每个问题我都需要重新去训练网络吗?因为程序员都不太喜欢做重复的事情,因此答案肯定是 ...

  2. 达拉草201771010105《面向对象程序设计(java)》第十八周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十八周学习总结 实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构 ...

  3. 使用Pods中使用Swift和Objective-C混编-编译不通过的原因

    iOS开发#使用Pods中使用Swift和Objective-C混编-编译不通过的原因-ld: symbol(s) not found for architecture arm64 问题基本描述 在P ...

  4. 为XHR对象所有方法和属性提供钩子 全局拦截AJAX

    摘要 ✨长文 阅读约需十分钟 ✨跟着走一遍需要一小时以上 ✨约100行代码 前段时间打算写一个给手机端用的假冒控制台 可以用来看console的输出 这一块功能目前已经完成了 但是后来知道有一个腾讯团 ...

  5. Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)

    A. Even Subset Sum Problem 题意 给出一串数,找到其中的一些数使得他们的和为偶数 题解 水题,找到一个偶数或者两个奇数就好了 代码 #include<iostream& ...

  6. 停下来,回头看 ——记2020BUAA软工第一次作业-热身!

    description: 'Mar 1st, 2020 - Mar 3rd, 2020' 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任建) 这个作业的要求在哪里 第一次作 ...

  7. Webpack和Gulp,Webpack和Gulp的基本区别:

    Gulp和Webpack的基本区别: gulp可以进行js,html,css,img的压缩打包,是自动化构建工具,可以将多个js文件或是css压缩成一个文件,并且可以压缩为一行,以此来减少文件体积,加 ...

  8. ZipArchive(解压文件)

    一.首先介绍minizip 的使用方法 ziparchive是基于开源代码”MiniZip”的zip压缩与解压的Objective-C 的Class,使用起来非常的简单方法:从http://code. ...

  9. 使用ZXingObjC扫描二维码横竖屏对应

    /** 根据屏幕的方向设置扫描的方向 * @author maguang * @param parameter * @return result */ - (void)showaCapture { C ...

  10. JavaMail(一):利用JavaMail发送简单邮件

    JavaMail,提供给开发者处理电子邮件相关的编程接口.它是Sun发布的用来处理email的API.它可以方便地执行一些常用的邮件传输.但它并没有包含在JDK中,要使用JavaMail首先要下载ja ...