zoukankan      html  css  js  c++  java
  • 结点更新+区间统计——hdu1166

    在单纯的更新结点时,是不需要用到遗传结构的

    在区间的更新时,会用到遗传结构

    View Code
    #include<stdio.h>
    #include
    <string.h>

    struct data
    {
    int l,r,val;
    }st[
    200009];

    void build(int ll,int rr,int n)
    {
    st[n].l
    =ll;
    st[n].r
    =rr;
    st[n].val
    =0;
    if (ll==rr) return ;
    int mid=(ll+rr)/2;
    build(ll,mid,
    2*n);
    build(mid
    +1,rr,2*n+1);
    }
    void updata(int ll,int rr,int a,int n,char c)//
    {
    if (st[n].l==ll&&st[n].r==rr)
    {
    if(c=='+')
    st[n].val
    +=a;
    else
    st[n].val
    -=a;
    return ;
    }

    if(c=='+')
    st[n].val
    +=a;
    else
    st[n].val
    -=a;

    int mid=(st[n].l+st[n].r)/2;
    if (rr<=mid)
    {
    updata(ll,rr,a,
    2*n,c);
    }
    else if (ll>=mid+1) updata(ll,rr,a,2*n+1,c);
    else
    {
    updata(ll,mid,a,
    2*n,c);
    updata(mid
    +1,rr,a,2*n+1,c);
    }

    }

    int search(int ll,int rr,int n)
    {
    if(st[n].l==ll&&st[n].r==rr)return st[n].val;

    int mid=(st[n].l+st[n].r)/2;
    if (rr<=mid) return search(ll,rr,2*n);
    else if (ll>=mid+1)return search(ll,rr,2*n+1);
    else
    {
    return search(ll,mid,2*n)+search(mid+1,rr,2*n+1);
    }
    }

    int main()
    {
    int t;
    scanf(
    "%d",&t);
    int cc=1;
    while(t--)
    {

    printf(
    "Case %d:\n",cc);
    cc
    ++;
    int n;
    scanf(
    "%d",&n);
    int i;
    build(
    1,n,1);
    for(i=1;i<=n;i++)
    {
    int temp;
    scanf(
    "%d",&temp);
    updata(i,i,temp,
    1,'+');
    }
    getchar();
    char ss[10];
    while(1)
    {
    scanf(
    "%s",ss);
    getchar();
    if(strcmp(ss,"Query")==0)
    {
    int ll,rr;
    scanf(
    "%d%d",&ll,&rr);
    printf(
    "%d\n",search(ll,rr,1));
    }
    else if(strcmp(ss,"Add")==0)
    {
    int no,addv;
    scanf(
    "%d%d",&no,&addv);
    updata(no,no,addv,
    1,'+');
    }
    else if(strcmp(ss,"Sub")==0)
    {
    int no,addv;
    scanf(
    "%d%d",&no,&addv);
    updata(no,no,addv,
    1,'-');
    }
    else
    {
    break;
    }
    }
    }
    return 0;
    }
  • 相关阅读:
    HDU4126
    训练赛Day6-The 36th ACMICPC Asia Regional Beijing Site
    弦图
    HDU4821 字符串哈希+尺取
    HDU1854
    HDU1166
    输入输出挂
    LightOj 1027 数学期望
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2104475.html
Copyright © 2011-2022 走看看