• HDU 1166 敌兵布阵 (线段树单点更新区间求值)


    题意

    中文题面不需要解释了吧

    题解

    裸的线段树线段树单点更新区间,注意输出格式就ok,算是给新手入门的题

     1 #define bug(x,y) cout<<"i="<<x<<": "<<y<<endl
     2 #define IO std::ios::sync_with_stdio(0);
     3 #include <bits/stdc++.h>
     4 #define itor ::iterator
     5 using namespace  std;
     6 typedef long long ll;
     7 typedef pair<ll,ll>P;
     8 #define pb push_back
     9 #define se second
    10 #define fi first
    11 #define rs o*2+1
    12 #define ls o*2
    13 const int N=5e4+5;
    14 int sumv[N*4];
    15 int T,n;
    16 void build(int o,int l,int r){
    17     if(l==r){
    18         scanf("%d",&sumv[o]);
    19         return;
    20     }
    21     int m=(l+r)/2;
    22     build(ls,l,m);
    23     build(rs,m+1,r);
    24     sumv[o]=sumv[ls]+sumv[rs];
    25 }
    26 void up(int o,int l,int r,int p,int v){
    27     if(l==r&&l==p){
    28         sumv[o]+=v;
    29         return;
    30     }
    31     int m=(l+r)/2;
    32     if(p<=m)up(ls,l,m,p,v);
    33     else up(rs,m+1,r,p,v);
    34     sumv[o]=sumv[ls]+sumv[rs];
    35 }
    36 int query(int o,int l,int r,int ql,int qr){
    37     if(l>=ql&&r<=qr){
    38         return sumv[o];
    39     }
    40     int m=(l+r)/2;
    41     int res=0;
    42     if(ql<=m)res+=query(ls,l,m,ql,qr);
    43     if(qr>m)res+=query(rs,m+1,r,ql,qr);
    44     return res;
    45 }
    46 int main(){
    47     scanf("%d",&T);
    48     int kase=0;
    49     while(T--){
    50         scanf("%d",&n);
    51         build(1,1,n);
    52         char s[20];
    53         int x,y;
    54         printf("Case %d:
    ",++kase);
    55         while(~scanf("%s",s)){
    56             if(s[0]=='E')break;
    57             if(s[0]=='A'){
    58                 scanf("%d%d",&x,&y);
    59                 up(1,1,n,x,y);
    60             }
    61             else if(s[0]=='S'){
    62                 scanf("%d%d",&x,&y);
    63                 up(1,1,n,x,-y);
    64             }
    65             else{
    66                 scanf("%d%d",&x,&y);
    67                 printf("%d
    ",query(1,1,n,x,y));
    68             }
    69         }
    70     }
    71 }
  • 相关阅读:
    modals-methods 模态框 使用说明文档
    jquery validate form 异步提交
    log在线生成器 html中如何设置浏览器中标题前的logo
    解决django关于图片无法显示的问题
    Git远程操作
    Git基本操作
    Git思维导图
    连接GitHub的方法
    Git的三种区域
    Gentoo(贱兔)Linux安装笔记
  • 原文地址:https://www.cnblogs.com/ccsu-kid/p/10601991.html
Copyright © 2020-2023  润新知