zoukankan      html  css  js  c++  java
  • hdu 1556 树状数组+点查询

    树状数组

    N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜 色了,你能帮他算出每个气球被涂过几次颜色吗?

     用了树状数组的区间更新 单点查找(一般为单点更新 区间查找)

    例如 区间(2,4)加1

    则Updata(2,1)   Updata(4+1,-1)

    实现了更新(2,4)的值而不改变其他值

    求Sum时即可得到某一点的值

     1 #include<cstdio>
     2 #include<cstring>
     3 using namespace std;
     4 
     5 const int MAXN=100010;
     6 int c[MAXN];
     7 int n;
     8 
     9 int lowbit(int x)
    10 {
    11     return x&(-x);
    12 }
    13 void add(int i,int val)
    14 {
    15     while(i<=n)
    16     {
    17         c[i]+=val;
    18         i+=lowbit(i);
    19     }
    20 }
    21 int sum(int i)
    22 {
    23     int s=0;
    24     while(i>0)
    25     {
    26         s+=c[i];
    27         i-=lowbit(i);
    28     }
    29     return s;
    30 }
    31 int main()
    32 {
    33     int a,b;
    34     while(scanf("%d",&n),n)
    35     {
    36         memset(c,0,sizeof(c));
    37         for(int i=0;i<n;i++)
    38         {
    39             scanf("%d%d",&a,&b);
    40             add(a,1);
    41             add(b+1,-1);
    42         }
    43         for(int i=1;i<n;i++)
    44           printf("%d ",sum(i));
    45         printf("%d
    ",sum(n));
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    matplotlib基础
    numpy基础
    池化层的前向计算
    卷积神经网络应用于MNIST数据集分类
    用tensorflow的Eager执行模式
    tensorboard网络结构
    优化器
    交叉熵
    [webpack]——loader配置
    [webpack]--webpack 如何解析代码模块路径
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4318363.html
Copyright © 2011-2022 走看看