• BZOJ 3155 Preprefix sum


    两个BIT。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxn 100050
    using namespace std;
    long long n,m,x,y,t[maxn][3],a[maxn];
    char s[12];
    long long lowbit(long long x) {return (x&(-x));}
    void modify(long long x,long long val,long long type)
    {
        for (long long i=x;i<=n;i+=lowbit(i))
            t[i][type]+=val;
    }
    long long ask(long long x,long long type)
    {
        long long ret=0;
        for (long long i=x;i>=1;i-=lowbit(i))
            ret+=t[i][type];
        return ret;
    }
    int main()
    {
        scanf("%lld%lld",&n,&m);
        for (long long i=1;i<=n;i++)
        {
            scanf("%lld",&a[i]);
            modify(i,a[i],1);modify(i,i*a[i],2);
        }
        for (long long i=1;i<=m;i++)
        {
            scanf("%s",s);
            if (s[0]=='M') 
            {
                scanf("%lld%lld",&x,&y);
                modify(x,y-a[x],1);modify(x,x*(y-a[x]),2);
                a[x]=y;
            }
            else
            {
                scanf("%lld",&x);
                printf("%lld
    ",(x+1)*ask(x,1)-ask(x,2));
            }
        }
        return 0;
    }
  • 相关阅读:
    函数宏实现循环左移
    函数宏判断小端
    Linux下32位与64位数据类型大小
    转:C语言嵌入式系统编程之软件架构篇
    转:详解大端小段模式
    time函数计算时间
    匈牙利命名法
    20131030
    20131029
    20131028
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/5986696.html
Copyright © 2020-2023  润新知