zoukankan      html  css  js  c++  java
  • Ryuji doesn't want to study 2018徐州icpc网络赛 树状数组

    Ryuji is not a good student, and he doesn't want to study. But there are n books he should learn, each book has its knowledge a[i]a[i].

    Unfortunately, the longer he learns, the fewer he gets.

    That means, if he reads books from ll to rr, he will get a[l] imes L + a[l+1] imes (L-1) + cdots + a[r-1] imes 2 + a[r]a[l]×L+a[l+1]×(L1)++a[r1]×2+a[r](LL is the length of [ ll, rr ] that equals to r - l + 1rl+1).

    Now Ryuji has qq questions, you should answer him:

    11. If the question type is 11, you should answer how much knowledge he will get after he reads books [ ll, rr ].

    22. If the question type is 22, Ryuji will change the ith book's knowledge to a new value.

    Input

    First line contains two integers nn and qq (nn, q le 100000q100000).

    The next line contains n integers represent a[i]( a[i] le 1e9)a[i](a[i]1e9) .

    Then in next qq line each line contains three integers aa, bb, cc, if a = 1a=1, it means question type is 11, and bb, cc represents [ ll , rr ]. if a = 2a=2 , it means question type is 22 , and bb, cc means Ryuji changes the bth book' knowledge to cc

    Output

    For each question, output one line with one integer represent the answer.

    样例输入

    5 3
    1 2 3 4 5
    1 1 3
    2 5 0
    1 4 5

    样例输出

    10
    8

    题目来源

    ACM-ICPC 2018 徐州赛区网络预赛

     

    题意:有n个数,你可以对这n个数进行m次操作,可以进行的操作有两种,第一种将b位置的数置为c,第二种求a[l]×L+a[l+1]×(L1)++a[r1]×2+a[r]

    分析:注意表达式:a[l]×L+a[l+1]×(L1)++a[r1]×2+a[r]可以化为:

        sum_{i=l}^{r}a[i]*(n-i+1)-(n-r)sum_{i=l}^{r}a[i]

      化成这个式子后,我们每次只要维护a[i]*(n-i+1)和a[i]就可以了,更新的时候加上c-a[i]就可以将a[i]更新为c

    做题目做少了,打网络赛的时候都没有想到这样化简式子

    参考博客:https://blog.csdn.net/qq_39826163/article/details/82586489

    AC代码:

    #include <map>
    #include <set>
    #include <stack>
    #include <cmath>
    #include <queue>
    #include <cstdio>
    #include <vector>
    #include <string>
    #include <bitset>
    #include <cstring>
    #include <iomanip>
    #include <iostream>
    #include <algorithm>
    #define ls (r<<1)
    #define rs (r<<1|1)
    #define debug(a) cout << #a << " " << a << endl
    using namespace std;
    typedef long long ll;
    const ll maxn = 1e5+10;
    const ll mod = 2e9+7;
    const double pi = acos(-1.0);
    const double eps = 1e-8;
    ll n, m, q, a[maxn], t1[maxn], t2[maxn];
    ll lowbit( ll x ) {
        return x&(-x);
    }
    void update1( ll x, ll v ) {
        while( x <= n ) {
            t1[x] += v;
            x += lowbit(x);
        }
    }
    void update2( ll x, ll v ) {
        while( x <= n ) {
            t2[x] += v;
            x += lowbit(x);
        }
    }
    ll query1( ll x ) {
        ll sum = 0;
        while(x) {
            sum += t1[x];
            x -= lowbit(x);
        }
        return sum;
    }
    ll query2( ll x ) {
        ll sum = 0;
        while(x) {
            sum += t2[x];
            x -= lowbit(x);
        }
        return sum;
    }
    int main() {
        scanf("%lld%lld",&n,&m);
        for( ll i = 1; i <= n; i ++ ) {
            scanf("%lld",&a[i]);
            update1(i,a[i]);
            update2(i,a[i]*(n-i+1));
        }
        while( m -- ) {
            ll k, b, c;
            scanf("%lld%lld%lld",&k,&b,&c);
            if( k == 1 ) {
                ll sum1 = query1(c) - query1(b-1);
                ll sum2 = query2(c) - query2(b-1);
                ll ans = sum2-(n-c)*sum1;
                printf("%lld
    ",ans);
            } else {
                update1(b,c-a[b]);
                update2(b,(c-a[b])*(n-b+1));
                a[b] = c;
            }
        }
        return 0;
    }
    

      

  • 相关阅读:
    org.springframework.context.event.AbstractApplicationEventMulticaster
    40. Testing Prev Part IV. Spring Boot features
    nginx+redis 实现 jsp页面缓存,提升系统吞吐率
    SpringDataRedis事务 专题
    cat监控平台环境搭建 专题
    Archive for required library: ‘WebContent/WEB-INF/lib/xxx.jar cannot&n
    m2eclipse简单使用,创建Maven项目 ,运行mvn命令
    如何修改maven默认仓库(即repository)的路径
    MyEclipse2014不支持jre1.8吗
    MyEclipse 2015优化技巧
  • 原文地址:https://www.cnblogs.com/l609929321/p/9621795.html
Copyright © 2011-2022 走看看