zoukankan      html  css  js  c++  java
  • HDU1166-ZKW树

    单点修改,区间求和

     1 //
     2 // Created by helica on 2018/3/18.
     3 //
     4 
     5 //zkw
     6 
     7 #include <cstdio>
     8 #include <cstring>
     9 #include <cstdlib>
    10 #include <algorithm>
    11 
    12 using namespace std;
    13 
    14 const int N = 50000 + 10;
    15 
    16 int s,t,M=1,n;
    17 int T[N << 2];
    18 
    19 int query(int s, int t){
    20     int ans = 0;
    21     for (s = s+M-1,t=t+M+1; s^t^1 ; s>>=1,t>>=1) {
    22         if(~s&1) ans += T[s^1];
    23         if( t&1) ans += T[t^1];
    24     }
    25     return ans;
    26 }
    27 
    28 void add(int x, int v){
    29     T[M+x] += v;
    30     for(int i=(M+x)>>1; i; i>>=1) T[i] = T[i<<1] + T[i<<1|1];
    31 }
    32 
    33 void sub(int x, int v){
    34     T[M+x] -= v;
    35     for(int i=(M+x)>>1; i; i>>=1) T[i] = T[i<<1] + T[i<<1|1];
    36 }
    37 
    38 int main(){
    39     int k;
    40     scanf("%d", &k);
    41     for(int kase=1;kase<=k;kase++){
    42         scanf("%d", &n);
    43 
    44         memset(T, 0, sizeof T);
    45         for(M=1;M<n;M<<=1);
    46 
    47         for(int i=0,tmp;i<n;i++){
    48             scanf("%d", &tmp);
    49             add(i+1, tmp);
    50         }
    51         printf("Case %d:
    ", kase);
    52         char op[10];
    53         while(scanf("%s", op)){
    54             if (op[0] == 'E') break;
    55             else if(op[0] == 'Q'){
    56                 scanf("%d %d", &s, &t);
    57                 printf("%d
    ", query(s, t));
    58             }else if(op[0] == 'A'){
    59                 scanf("%d %d", &s, &t);
    60                 add(s, t);
    61             }else if(op[0] == 'S'){
    62                 scanf("%d %d", &s, &t);
    63                 sub(s, t);
    64             }
    65         }
    66     }
    67 }
  • 相关阅读:
    mybatis连接MySQL8.0出现的问题
    zqsb项目中发现没有getMSSVideoList
    idea快速实现接口的方法
    鸟枪换炮---IDEA
    IDEA的使用---常用的快捷键
    MQ消息队列
    token的主要用法?
    oracle中游标的使用
    乐观锁和悲观锁
    分布式系统的事务控制
  • 原文地址:https://www.cnblogs.com/helica/p/8596301.html
Copyright © 2011-2022 走看看