zoukankan      html  css  js  c++  java
  • NYOJ 123士兵杀敌(四)(树状数组)(插线问点)

    和树状数组插点求线刚好相反,插线求点看上去似乎是插点求线的逆操作,插点求线操作是:插点时更新后方+lowbit位置,求线时统计前方-lowbit 的和,插线求点反而是插线时修改前方lowbit位置值,求点时统计后方lowbit的和,插点求线代码见士兵杀敌(二),以下是插线求点的方法:

     1 #include<cstdio>
     2 #include<cstring>
     3 const int M=1000010;
     4 int data[M];
     5 int Max;
     6 inline int LowBit(int n)
     7 {
     8     return n&(-n);
     9 }
    10 void Plus(int n,int value) //前n项每项增加value
    11 {
    12     while(n>0)
    13     {
    14         data[n]+=value;
    15         n-=LowBit(n);
    16     }
    17 }
    18 int Get(int n) //获取每个位置的值
    19 {
    20     int sum=0;
    21     while(n<=Max)
    22     {
    23         sum+=data[n];
    24         n+=LowBit(n);
    25     }
    26     return sum;
    27 }
    28 int main()
    29 {
    30     int n,a,b,v;
    31     char s[9];
    32     scanf("%d%d",&n,&Max);
    33     while(n--)
    34     {
    35         scanf("%s",s);
    36         if(s[0]=='A')
    37         {
    38             scanf("%d%d%d",&a,&b,&v);
    39             Plus(a-1,-v);//关键
    40             Plus(b,v);//关键
    41         }
    42         else
    43         {
    44             scanf("%d",&a);
    45             printf("%d
    ",Get(a));
    46         }
    47     }
    48     return 0;
    49 }
    View Code

     


               

  • 相关阅读:
    php获取OS信息
    坑爹的IE quirk模式
    [转]mysql privileges
    [转]VSFTPD的设置选项
    php性能分析工具xhprof
    php扩展安装
    又是万恶的IE....6
    ASP.NET操作文件(文件夹)简单生成html操作示例
    asp.net文件操作类
    c++/clr与c#的性能比较
  • 原文地址:https://www.cnblogs.com/qiu520/p/3199271.html
Copyright © 2011-2022 走看看