zoukankan      html  css  js  c++  java
  • TTTTTTTTTTTTT LA 2191 树状数组 稍修改

    题意:给出n个数字,操作有修改(S)和输出区间和(M)。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <vector>
    #include <queue>
    #include <stack>
    #include <map>
    #include <algorithm>
    #include <set>
    using namespace std;
    typedef long long ll;
    typedef unsigned long long Ull;
    #define MM(a,b) memset(a,b,sizeof(a));
    const double eps = 1e-10;
    const int inf = 0x3f3f3f3f;
    const double pi=acos(-1);
    const int maxn=200000+5;
    
    int data[maxn],n,cnt=0;
    char a[5];
    
    int lowbit(int i)
    {
        return i&(-i);
    }
    
    int sum(int i)
    {
        int ret=0;
        while(i>0)
        {
            ret+=data[i];
            i-=lowbit(i);
        }
        return ret;
    }
    
    void update(int i,int j)
    {
        while(i<=n)
        {
            data[i]+=j;
            i+=lowbit(i);
        }
    }
    
    int main()
    {
        while(~scanf("%d",&n)&&n)
        {
            MM(data,0);
            for(int i=1;i<=n;i++)
                {
                    int u;
                    scanf("%d",&u);
                    update(i,u);
                }
            if(cnt>=1) printf("
    ");
            printf("Case %d:
    ",++cnt);
            while(~scanf("%s",a))
            {
                if(a[0]=='E') break;
                if(a[0]=='M')
                {
                    int l,r;
                    scanf("%d %d",&l,&r);
                    printf("%d
    ",sum(r)-sum(l-1));
                }
                else
                {
                    int i,j;
                    scanf("%d %d",&i,&j);
                    int k=sum(i)-sum(i-1);
                    update(i,j-k);
                }
            }
        }
        return 0;
    }
    

      分析:BIT模版题,,就是单点更新要转换成区间更新(因为BIT的每个节点都是对应区间,而不是单独

    一个节点),输入输出格式本来弄错了,,题目说的是在两个case之间输出一个空格

  • 相关阅读:
    Vue.js学习笔记 第五篇 事件处理
    多sheet导出核心代码
    jeecg查询备份
    输入URL 一瞬间发生了什么
    get post 的区别
    Redis所需内存 超过可用内存怎么办
    MySQL联合索引
    常用的sql
    MySQL 时间类型字段的分析
    PHP各个版本的区别
  • 原文地址:https://www.cnblogs.com/smilesundream/p/5414923.html
Copyright © 2011-2022 走看看