• 【FOJ】1921 栀子花开


     1 #include<cstdio>
     2 #include<algorithm>
     3 using namespace std;
     4 #define MAXN 10010
     5 int tree[MAXN<<2],ca=1;
     6 inline void PushUp(int rt)
     7 {
     8     tree[rt]=min(tree[rt<<1],tree[rt<<1|1]);
     9 }
    10 void Build(int L,int R,int rt)
    11 {
    12     if(L==R)
    13         scanf("%d",&tree[rt]);
    14     else
    15     {
    16         int mid=(L+R)>>1;
    17         Build(L,mid,rt<<1);
    18         Build(mid+1,R,rt<<1|1);
    19         PushUp(rt);
    20     }
    21 }
    22 void Add(int x,int val,int L,int R,int rt)
    23 {
    24     if(L==R)
    25         tree[rt]+=val;
    26     else
    27     {
    28         int mid=(L+R)>>1;
    29         if(x<=mid)
    30             Add(x,val,L,mid,rt<<1);
    31         else
    32             Add(x,val,mid+1,R,rt<<1|1);
    33         PushUp(rt);
    34     }
    35 }
    36 void Update(int val,int L,int R,int rt)
    37 {
    38     if(L==R)
    39         tree[rt]+=val;
    40     else
    41     {
    42         int mid=(L+R)>>1;
    43         if(tree[rt]==tree[rt<<1])
    44             Update(val,L,mid,rt<<1);
    45         else
    46             Update(val,mid+1,R,rt<<1|1);
    47         PushUp(rt);
    48     }
    49 }
    50 void Query(int L,int R,int rt)
    51 {
    52     if(L==R)
    53         printf("Case %d: %d %d\n",ca++,L,tree[rt]);
    54     else
    55     {
    56         int mid=(L+R)>>1;
    57         if(tree[rt]==tree[rt<<1])
    58             Query(L,mid,rt<<1);
    59         else
    60             Query(mid+1,R,rt<<1|1);
    61     }
    62 }
    63 int main()
    64 {
    65     int n,t,q,a,b;
    66     scanf("%d",&t);
    67     while(t--)
    68     {
    69         scanf("%d",&n);
    70         Build(1,n,1);
    71         scanf("%d",&q);
    72         while(q--)
    73         {
    74             scanf("%d%d",&a,&b);
    75             if(a)
    76                 Add(a,b,1,n,1);
    77             else
    78                 Update(b,1,n,1);
    79         }
    80         Query(1,n,1);
    81     }
    82     return 0;
    83 }
    新博客:www.zhixiangli.com
  • 相关阅读:
    async
    subing用法
    vue中子组件调用父组件的方法
    Python—创建目录
    Python—访问限制
    Python—实例方法,实例数据(类属性,实例属性)
    Python—对象,类
    tail命令
    head命令
    pwd命令
  • 原文地址:https://www.cnblogs.com/DrunBee/p/2557417.html
Copyright © 2020-2023  润新知