zoukankan      html  css  js  c++  java
  • Color the ball(给球涂色)

    hdoj 1556

    解决:树状数组基础,插段求点 数据大小100000

    /*本来是不打算写这个报告,就是一个基础的插段问点,但是ac之后,又搜了一个代码,让对树状数组有了一点新的认识,就从新改了一下,仍然是可以向后更新,向前求和,只是更新的时候,多更新的要减去,求点的时候向前累计,只有更新到的点才有值*/
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    const int N=100005;
    int c[N];
    int n;
    int lowbit(int x)
    {
        return x&(-x);
    }
    void update(int p,int inc)
    {
        for(int i=p;i<=n;i+=lowbit(i))
        c[i]+=inc;
    }
    int get(int p)
    {
        int res=0;
        for(int i=p;i>0;i-=lowbit(i))
         res+=c[i];
        return res; 
    }
    int main()
    {
        int a,b;
        while(scanf("%d",&n),n)
        {
            memset(c,0,sizeof(c));
            for(int i=0;i<n;i++)
            {
                scanf("%d",&a);
                scanf("%d",&b);
                update(a,1); 
                update(b+1,-1);
            }
            for(int i=1;i<n;i++)
              printf("%d ",get(i));
            printf("%d\n",get(n));
        }
        system("pause");
        return 0;
    }
    

  • 相关阅读:
    java之数组使用以及拓展
    Java之数组介绍
    方法
    break&continue
    networkmanager is not running 网络管理没有运行
    CentOS-7修改IP
    操作系统
    计算机基础理论
    编码和解码
    pyQuery库
  • 原文地址:https://www.cnblogs.com/hpustudent/p/2190204.html
Copyright © 2011-2022 走看看