纪念树状数组初步(……);

这题已经给了y升序,y相同时x升序,(yeah)

所以容易想到O(n^2)的模拟算法;

其实分析一下就是对于当前xi,统计之前有多少个小于等于xi(因为已经保证了没有相同坐标的点)

初学者(比如我),一开始感觉和树状数组没毛关系,但是……

仔细想想发现,树状数组是修改和区间求值的,我们能不能将问题转化呢?

可以!这里用到类似计数排序的思想,a数组表示对x可能出现的范围内中每个数表示的次数;

则:对于当前xi,之前小于等于xi的个数就等于sigma(a[0]~a[x[i]])

这下子就变成树状数组拿手的区间求和了!

但注意细节,因为存在x=0,但构建树状数组下标是从1开始的

所以我们把所有x加1即可,不影响位置之间的关系。

 var x,y,ans,b:array[..] of longint;
    c:array[..] of longint;
    maxx,i,n:longint;
function lowbit(x:longint):longint;   //树状数组的核心
  begin
    lowbit:=x and -x;
  end;
function ask(x:longint):longint;     //区间求和
  begin
    ask:=;
    while x<> do
    begin
      ask:=ask+c[x];
      x:=x-lowbit(x);
    end;
  end;
procedure work(x:longint);          //更改单点时,注意把父亲节点也要更新
  begin
    while x<=maxx do
    begin
      inc(c[x]);
      x:=x+lowbit(x);
    end;
  end; begin
  readln(n);
  for i:= to n do
  begin
    readln(x[i],y[i]);
    inc(x[i]);
    if x[i]>maxx then maxx:=x[i];             //限定范围
  end;
  for i:= to n do
  begin
    b[i]:=ask(x[i]);
    work(x[i]);
  end;
  for i:= to n do
    inc(ans[b[i]]);
  for i:= to n- do
    writeln(ans[i]);
end.

相对于线段树,树状数组实现还是很简单的,时空复杂度也不错!

poj2352的更多相关文章

  1. poj2352(树状数组)

    题目链接:https://vjudge.net/problem/POJ-2352 题意:在直角坐标系中给出n个点的 (x,y),(0<=x,y<=32000),定义每个点的level为(x ...

  2. POJ2352 Stars [树状数组模板]

    题意:输入一n颗星星的x,y坐标,给定判断level的标准,即某颗星星左下边(不高于它,不超过他,相当于以他为基准的第三象限)星星的数目为level, 输出level从0到n的星星个数. //poj2 ...

  3. POJ2352 Stars (静态二叉检索树)

    https://vjudge.net/problem/POJ-2352 分析: 由于是按照y坐标的升序,y坐标向等的按x的升序的顺序给出星星.那么某个星星的等级数就是在他前面x坐标小于等于他的x坐标的 ...

  4. POJ-2352 Stars 树状数组

    Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 39186 Accepted: 17027 Description A ...

  5. poj2352消防站

    题目大意:有n个点的一棵树,每个点有两个值:w和c.现在要在其中若干点建立消防站,使得每个点到最近的消防站的距离不超过该点的c值,i点建立消防站的费用为w.求最小费用. 分析:本题显然是树型Dp.定义 ...

  6. 树状数组POJ2352星星

    http://poj.org/problem?id=2352 这道题的题意对于住学者应该比较难理解,但是如果弄明白他的意思的话,你就会发现这就是赤裸裸的树状数组,哎,欺负我不懂是吧,当时读题读啦好久, ...

  7. 【POJ2352】【树状数组】Stars

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

  8. poj2352 Stars

    http://poj.org/problem?id=2352 #include <cstdio> #include <cstring> #define maxn 400000 ...

  9. POJ2352:Stars

    题目 Stars Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 34016   Accepted: 14839 Descri ...

随机推荐

  1. 使用GruntJS构建Web程序

    Gruntjs是JavaScript项目的构建工具,也是基于node的一个命令行工具.很多开源JS项目都是使用它搭建.如jQuery.Qunit.CanJS等.它有以下作用 合并JS文件 压缩JS文件 ...

  2. 简单3D翻转

    1.先上图~~~ 2.代码 html部分 <body> <div id="my3d"> <div id="box"> < ...

  3. WebForm页面运行周期--页面关系

    1.前台文件类继承于后台文件类 2.当前台文件中包含某个标签runat= server的时候,asp.net就会在编译这个页面前后台文件类的时候,在后台类中添加一个相应的控件对象:当页面被访问,也就是 ...

  4. 文件大小的友好输出及其 Python 实现

    在数据库中存储时,使用 Bytes 更精确,可扩展性和灵活性都很高. 输出时,需要做一些适配. 1. 注意事项与测试代码 需要考虑 sizeInBytes 为 None 的场景. 除以 1024.0 ...

  5. CentOS 下 Codeblocks 的 安装 + 汉化 以及 基本使用介绍

    Codeblocks 安装 注:在root用户下运行下列命令 1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可 yum install gcc yu ...

  6. 利用IDE编写C语言程序的一点注意事项

    前言:我是喜欢编程的一只菜鸟,在自学过程中,对遇到的一些问题和困惑,有时虽有一点体会感悟,但时间一长就会淡忘,很不利于知识的积累.因此,想通过博客园这个平台,一来记录自己的学习体会,二来便于向众多高手 ...

  7. 通过物理模型生成Java代码

    通过物理模型生成Java代码 软件开发过程中,我们一般是先针对数据库建模,物理建模完成后,生成数据库表,编码阶段的时候我们会针对数据库表生成大量的Javaeban或者是实体类 Powertdesign ...

  8. velocity语法

    1.声明变量 #set($var = XXX) 右边可以是以下的内容 Variable reference String literal Property reference Method refer ...

  9. python学习笔记2(变量)

    变量是只不过保留的内存位置用来存储值,这意味着,当创建一个变量,那么它在内存中保留一些空间. Python是弱类型,无需明确指定变量类型,赋值的同时会自动声明类型. x = 1 y = 2.0 nam ...

  10. man手册使用

    1.是普通的命令 2.是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件) 3.是库函数,如printf,fread 4.是特殊文件,也就是/dev ...