【传送门】:https://nanti.jisuanke.com/t/31460

【题意】给定一个数组a[N],有两种操作,

操作1,给定 l , r,  查询a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r]的值

(L is the length of [ ll, rr ] that equals to r - l + 1r−l+1).

操作2, 给定x,y, 使a[x] = y

有N个数据,M种操作,对于每个操作1输出计算结果。

【题解】很容易想出来是树状数组类型的题目。但是直接计算不好计算,需要构造合适的树状数组的原数组。这个原数组并不是单纯的a[N]

考虑题目要求的序列,将其变形:

这样我们可以构造并维护两个数组的树状数组,一个是a[i]的树状数组C1[i],一个是 a[i]*i的树状数组C2[i]。

注意这里是修改值而不是增加值,所以增加的是“新值与旧值得差”,并且要注意把原数组a[i]的值重新赋值。

【AC代码】

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int maxn = 1e5+;
ll a[maxn];
int n,m;
ll c1[maxn];
ll c2[maxn];
void init(){
memset(a , , sizeof a);
memset(c1 , , sizeof c1);
memset(c2 , , sizeof c2);
}
int lowbit(int x){
return x & (-x);
} ll query1(int x){
ll ans = ;
while(x > ){
ans += c1[x];
x -= lowbit(x);
}
return ans;
} void add1(int x , ll val){
while(x <= n){
c1[x] += val;
x += lowbit(x);
}
}
ll query2(int x){
ll ans = ;
while(x > ){
ans += c2[x];
x -= lowbit(x);
}
return ans;
} void add2(int x , ll val){
while(x <= n){
c2[x] += val;
x += lowbit(x);
}
} int main(){
while(cin>>n>>m){
init();
for(int i=; i<=n; i++){
cin>>a[i];
add1(i , a[i]);
add2(i , i*a[i]);
//cout<<c1[i]<<" "<<c2[i]<<endl;
}
ll aa,bb,cc;
for(int i=; i<=m; i++){
cin>>aa>>bb>>cc;
if(aa == ){
cout<<(cc+)*( query1(cc) - query1(bb-) ) - (query2(cc) - query2(bb-))<<endl;
}
else{
add1(bb , cc - a[bb] );
add2(bb , bb*cc - bb*a[bb] );
a[bb] = cc;
}
} }
return ;
}

最新文章

  1. MyBatis在insert插入操作时返回主键ID的配置
  2. go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )
  3. [转]HttpURLConnection的使用
  4. asp.net mvc页面javascript代码中如何使用razor
  5. 3.html5的文本元素
  6. AVR 定点数运算程序设计及数制转换
  7. 1063: [Noi2008]道路设计 - BZOJ
  8. Mysql锁机制和事务控制
  9. 一个简单的Java死锁示例(转)
  10. python爬虫框架scrapy问题的解决
  11. linux防火墙,高级策略策略实例详解(实例一)
  12. CF1105E Helping Hiasat
  13. linux系统的三种网络连接模式
  14. win8和win7下解决php5.3和5.4、5.5等不能加载php_curl.dll的终极解决办法 收藏
  15. js數字
  16. iot平台在k8s搭建过程
  17. atom使用markdown
  18. [USACO17FEB]Why Did the Cow Cross the Road I G
  19. [转]Github 简明教程
  20. ArcGIS Server 内存占用相关

热门文章

  1. Codeforces Round #272 (Div. 2)-C. Dreamoon and Sums
  2. idea快速生成实体类Entity
  3. vs 2017 boost 安装目录 非安装
  4. Spring框架针对dao层的jdbcTemplate操作crud之query查询数据操作
  5. EAGLView介绍
  6. [LUOGU] P1828 香甜的黄油 Sweet Butter
  7. Makefile文件中的sed介绍
  8. CodeForces 149D 区间DP Coloring Brackets
  9. Knockout v3.4.0 中文版教程-12-控制文本内容和外观-html绑定
  10. 【01】国内外git托管平台(总结by魔芋)