题目链接:https://nanti.jisuanke.com/t/A2007

题目大意:有一个序列含有n个数a[1],a[2],a[3],……a[n],有两种操作:

第一种操作:k=1,l,r,询问区间[l,r]中a[l]*len+a[l+1]*(len-1)+a[l+2]*(len-2)……+a[r]*1,其中len=(r-l+1),即区间长度

第二种操作:k=2,  l,r将下标为l的值a[l]修改为r

一共有q个询问,对于每个询问,如果k==1,输出答案即可。

解题思路:先进行一个小小的推理

询问可以简化为这种形式:

ans=Σ(i=l->r) (r+1-i)*a[i],然后可转化成,ans=Σ(i=l->r) (r+1)*a[i]-Σ(i=l->r) i*a[i]

然后就变成一个很简单的树状数位维护前缀和问题了,即为前缀和a【i】和i*a【i】就好了

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
int n,q;
ll sum1[maxn],sum2[maxn];
int lowbit(int x){return x&(-x);}
void update(ll a[],int x,ll val){
while(x<=maxn){
a[x]+=val;
x+=lowbit(x);
}
}
ll ask(ll a[],int x){
ll res=;
while(x){
res+=a[x];
x-=lowbit(x);
}
return res;
}
int main(){
cin>>n>>q;
for(int i=;i<=n;i++){
ll val;
cin>>val;
update(sum1,i,val);
update(sum2,i,i*val);
}
while(q--){
ll k,x,y;
cin>>k>>x>>y;
if(k==){
cout<<(y+)*(ask(sum1,y)-ask(sum1,x-))-(ask(sum2,y)-ask(sum2,x-))<<endl;
}else{
ll num=ask(sum1,x)-ask(sum1,x-);
update(sum1,x,y-num);
num=ask(sum2,x)-ask(sum2,x-);
update(sum2,x,x*y-num);
}
}
return ;
}

ACM-ICPC 2018 徐州赛区网络预赛 HRyuji doesn't want to study 树状数组的更多相关文章

  1. ACM-ICPC 2018 徐州赛区网络预赛 Ryuji doesn't want to study

    简单数学变换+线段树 简单数据结构签到题不解释 本来应该贴板子的,鉴于最近写代码太少了,而且由于要用两个线段树,平时板子都是一个的.以及板子在队友那.就当熟悉写代码,自己写了一下. #include ...

  2. ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)

    ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...

  3. ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)

    ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...

  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 徐州赛区网络预赛 B(dp || 博弈(未完成)

    传送门 题面: In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl n ...

  6. ACM-ICPC 2018 徐州赛区网络预赛 B. BE, GE or NE

    In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl named &qu ...

  7. ACM-ICPC 2018 徐州赛区网络预赛 H. Ryuji doesn't want to study

    262144K   Ryuji is not a good student, and he doesn't want to study. But there are n books he should ...

  8. ACM-ICPC 2018 徐州赛区网络预赛 F. Features Track

    262144K   Morgana is learning computer vision, and he likes cats, too. One day he wants to find the ...

  9. ACM-ICPC 2018 徐州赛区网络预赛 I. Characters with Hash

    Mur loves hash algorithm, and he sometimes encrypt another one's name, and call him with that encryp ...

随机推荐

  1. 微信ChatEmoji表情适配,对微信公众号开发有帮助

    最近做微信公众号时发现微信ChatEmoji表情与接受的消息显示表情的问题, 微信表情后面的ChatEmoji显示不出,花了一些时间整理,把pc和手机的表情全部都整理了, 由于有两百多个显示可能有点长 ...

  2. 现代Java进阶之路必备技能——2019 版

    Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等有深入了解. 第2个是全面的互联网技术相关知识,比如redis,mogodb,ngin ...

  3. 简说Java线程的那几个启动方式

    本文首发于本博客 猫叔的博客,转载请申明出处 前言 并发是一件很美妙的事情,线程的调度与使用会让你除了业务代码外,有新的世界观,无论你是否参与但是这对于你未来的成长帮助很大. 所以,让我们来好好看看在 ...

  4. nginx系列9:HTTP反向代理请求处理流程

    HTTP反向代理请求处理流程 如下图:

  5. css3动画--位移加阴影

    animation: name duration timing-function delay iteration-count direction; 值 描述 animation-name 规定需要绑定 ...

  6. 【Android】用Cubism 2制作自己的Live2D——软件的安装与破解!

    前言- 上文我们简单的了解了Cubism的情况,但是Cubism 2.X安装好以后如果不进行破解只能使用Free版本,这是我们接受不了的,我们是专业的.是来学习的,怎么能不用Pro版本呢?所以话不多说 ...

  7. 解决OracleOraDb10g_home1TNSListener服务无法启动

    造成OracleOraDb10g_home1TNSListener服务无法启动可能有三种情况: listener.ora文件配置有错误导致无法启动 相关环境变量没设置好 删除客户端时导致服务端相关注册 ...

  8. rocketmq4.x快速入门指南

    以下采用的是apache rocketmq 4.2.0版本 相关文档如下 快速体验: http://blog.seoui.com/2018/07/24/rocketmqinstall/ rocketm ...

  9. redis -字符串string

    字符串类型是Redis 中最为基础的数据存储类型,它在Redis 中是二进制安全的,该类型可以接收任何格式的数据,  字符串 Value 最多可以容纳的数据长度是521M. 保存: 设置键值. set ...

  10. 【转】Dockerfile详解

    Dockerfile详解 https://blog.csdn.net/wo18237095579/article/details/80540571 --------------------- 作者:大 ...