zoukankan      html  css  js  c++  java
  • 敌兵布阵

    http://acm.hdu.edu.cn/showproblem.php?pid=1166

     1 #include <bits/stdc++.h>
     2 #define lid id<<1
     3 #define rid id<<1|1
     4 #define maxn 50005
     5 using namespace std;
     6 struct node
     7 {
     8     int l,r,num;
     9 }tr[maxn*4];
    10 int s[maxn];
    11 
    12 void push_up(int id)
    13 {
    14     tr[id].num=tr[lid].num+tr[rid].num;
    15 }
    16 void build(int id,int l,int r)
    17 {
    18     tr[id].l=l;tr[id].r=r;
    19     if(l==r)
    20     {
    21         tr[id].num=s[l];
    22         return ;
    23     }
    24     int mid=(l+r)>>1;
    25     build(lid,l,mid);
    26     build(rid,mid+1,r);
    27     push_up(id);
    28 }
    29 void update(int id,int l,int r,int add)
    30 {
    31     if(tr[id].l==l&&tr[id].r==r)
    32     {
    33         tr[id].num+=add;
    34         return ;
    35     }
    36     int mid=(tr[id].l+tr[id].r)>>1;
    37     if(l<=mid) update(lid,l,r,add);
    38     else update(rid,l,r,add);
    39     push_up(id);
    40 }
    41 int  query(int id,int l,int r)
    42 {
    43     if(tr[id].l>=l&&tr[id].r<=r)
    44     {
    45         return tr[id].num;
    46     }
    47     int mid=(tr[id].l+tr[id].r)>>1;
    48     if(r<=mid) return query(lid,l,r);
    49     else if(l>mid) return query(rid,l,r);
    50     else return query(lid,l,mid)+query(rid,mid+1,r);
    51 }
    52 int main()
    53 {
    54     int t;
    55     scanf("%d",&t);
    56     int flag=0;
    57     while(t--)
    58     {
    59         int n;
    60         scanf("%d",&n);
    61         for(int i=1;i<=n;i++) scanf("%d",&s[i]);
    62         build(1,1,n);
    63         char s[10];
    64         printf("Case %d:
    ",++flag);
    65         while(~scanf("%s",s))
    66         {
    67             int l,r,add;
    68             if(s[0]=='E') break;
    69             else if(s[0]=='A')
    70             {
    71                 scanf("%d%d",&l,&add);
    72                 update(1,l,l,add);
    73             }
    74             else if(s[0]=='S')
    75             {
    76                 scanf("%d%d",&l,&add);
    77                 update(1,l,l,-add);
    78             }
    79             else
    80             {
    81                 scanf("%d%d",&l,&r);
    82                 int ans=query(1,l,r);
    83                 printf("%d
    ",ans);
    84             }
    85         }
    86     }
    87     return 0;
    88 }
    View Code
  • 相关阅读:
    复选框与全选框的选中状态的联动
    用localStorage在页面间传值
    移动端页面输入法挡住input输入框的解决方法
    input[type=file]上传图片及转为base64码以及预览
    截取url参数
    图片加载完成再执行事件
    每天记录一点点
    图片懒加载
    @ font-face 引入本地字体文件
    vue 仿zTree折叠树
  • 原文地址:https://www.cnblogs.com/mile-star/p/10597229.html
Copyright © 2011-2022 走看看