设读入的数组是a,树状数组用来维护a数组区间和sum,线段树用来维护一个另一个数组ssum的区间和,区间每个点a[i]*(n-i+1),那么l-r的答案是l-r的ssum-(n-r)*(sum[r]-sum[l-1]) (纸上画一下就知道了)

#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
int n,q,ql,qr,p;
long long v,_sum;
long long sum[maxn],ssum[4*maxn],addv[4*maxn],c[maxn];
long long ask(int x){
long long ans=0;
for(;x;x-=x&-x)ans+=sum[x];
return ans;
}
int add(int x,int y){
for(;x<=n;x+=x&-x)sum[x]+=y;
}
void update(int o,int L,int R){
if(L==R){
ssum[o]=v*(n-L+1);
return;
}
int M=L+(R-L)/2;
if(p<=M)update(o*2,L,M);
else update(o*2+1,M+1,R);
ssum[o]=ssum[o*2]+ssum[o*2+1];
}
long long query(int o,int L,int R){
int M=L+(R-L)/2;
long long ans=0;
if(ql<=L&&R<=qr)return ssum[o];
if(ql<=M)ans+=query(o*2,L,M);
if(M<qr)ans+=query(o*2+1,M+1,R);
return ans;
}
int main(){
int flag,a,b;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%lld",&c[i]);
add(i,c[i]);
}
for(int i=n;i>=1;i--){
p=i;
v=c[i];
update(1,1,n);
}
while(q--){
scanf("%d%d%d",&flag,&a,&b);
if(flag==1){
ql=a,qr=b;
_sum=query(1,1,n);
printf("%lld\n",_sum-(n-b)*(ask(b)-ask(a-1)));
}
else{
add(a,b-c[a]);
ql=a,qr=n;
p=a,v=b;
update(1,1,n);
c[a]=b;
}
}
}

  

2018网络预选赛 徐州H 线段树+树状数组的更多相关文章

  1. 2018网络预选赛 徐州G 线段树

    线段树,假设求(x1,y1)点的贡献,就找所有比该点出现时间晚,且x坐标大于x1的点中y最大的,贡献就是Y-y1,由于题目条件限制,不可能有x坐标大于(x1,y1)且y坐标大于y1的点,所以贡献肯定为 ...

  2. 2018网络预选赛 青岛 H

    题目链接:https://pintia.cn/problem-sets/1036903825309761536/problems/1041156323504345088 题意:小明从某一点出发,向右方 ...

  3. CodeForces -163E :e-Government (AC自动机+DFS序+树状数组)

    The best programmers of Embezzland compete to develop a part of the project called "e-Governmen ...

  4. 计蒜客 1460.Ryuji doesn't want to study-树状数组 or 线段树 (ACM-ICPC 2018 徐州赛区网络预赛 H)

    H.Ryuji doesn't want to study 27.34% 1000ms 262144K   Ryuji is not a good student, and he doesn't wa ...

  5. ACM-ICPC 2018 徐州赛区网络预赛 H Ryuji doesn't want to study (树状数组差分)

    https://nanti.jisuanke.com/t/31460 题意 两个操作.1:查询区间[l,r]的和,设长度为L=r-l+1, sum=a[l]*L+a[l+1]*(L-1)+...+a[ ...

  6. 【2018沈阳赛区网络预选赛J题】Ka Chang【分块+DFS序+线段树】

    题意 给出一个有根树(根是1),有n个结点.初始的时候每个结点的值都是0.下面有q个操作,操作有两种,操作1.将深度为L的点的值全部增加X.操作2.查询以x为根的子树的结点值得和. 其中N,Q< ...

  7. ACM-ICPC 2018 徐州赛区网络预赛H Ryuji doesn't want to study(树状数组)题解

    题意:给你数组a,有两个操作 1 l r,计算l到r的答案:a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r] (L is the length of [ l, r ] that ...

  8. ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study(树状数组)

    Output For each question, output one line with one integer represent the answer. 样例输入 5 3 1 2 3 4 5 ...

  9. Trace 2018徐州icpc网络赛 (二分)(树状数组)

    Trace There's a beach in the first quadrant. And from time to time, there are sea waves. A wave ( xx ...

随机推荐

  1. macvim/babun+spf13-vim

    mac: macvim brew install macvim --with-cscope --with-lua --with-override-system-vim brew linkapps ma ...

  2. SQL Compare

    http://pan.baidu.com/s/1jGIEEm6 来源:数据库同步工具: Red Gate Sql Compare

  3. CMC 实例管理

    有人问我,用户用的BW-QUERY看报表挺快的,用了BO发现很慢. 我心想,不会是什么高级优化吧,我可不会. 发现用WEBI时看报表很慢.那这个还是好解决的. 前面说那种情况,解决方法我只知道一种上H ...

  4. 20 Python 常用模块

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  5. JVM_总结_03_Java发展史

    一.前言 通过上一节,我们对整个java的技术体系有了一定的了解. 这一节我们来看下Java的发展史. 二.Java发展史 1.时间线 序号 发布日期 JDK 版本 新特性 详细说明 0 1991.0 ...

  6. LeetCode OJ:Count and Say(数数)

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  7. bzoj 1898 [Zjoi2005]Swamp 沼泽鳄鱼——矩阵快速幂

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1898 当然是邻接矩阵做转移矩阵来快速幂. 对于鳄鱼,好在它们周期的lcm是12,也就是每12 ...

  8. DataX安装环境搭建

    DataX环境搭建 环境搭建 Java安装(java>=1.6) JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads ...

  9. HDU5469(树的dfs)

    Antonidas Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  10. JDK 8 - JVM 对类的初始化探讨

    在<深入理解 Java 虚拟机>(第二版,周志明著)中,作者介绍了 JVM 必须初始化类(或接口)的五种情况,但是是针对 JDK 7 而言的. 那么,在 JDK 8 中,这几种情况有没有变 ...