题目:http://poj.org/problem?id=3468

推断过程可自己查,得式子:fixsum(x) = (x+1) * ∑(i=1,x)fi - ∑(i=1,x)i*fi;

其中 f 是真实值的修改量,故修改区间变为f的单点修改,求真实值时取f的前缀和加上自己的原值(真实值)。

故修改i*fi时也是普通的单点修改,再普通维护树状数组,每个影响的部分和都加上这个固定值。

最后求前缀和时用fixsum加上原前缀和得到修改后的。

#include<iostream>
#include<cstdio>
using namespace std;
int n,t,L,R,c;
long long a[],f[],fi[],s[];
char ch;
void add(int x,int c)
{
int y=x;
for(;x<=n;x+=x&-x)
{
f[x]+=c;
fi[x]+=y*c;
}
}
long long query(int x)
{
long long fis=,fs=;
int y=x;
for(;x;x-=x&-x)
fis+=fi[x],fs+=f[x];
return (y+)*fs-fis;
}
int main()
{
scanf("%d%d",&n,&t);
for(int i=;i<=n;i++)
{
scanf("%lld",&a[i]);
s[i]=s[i-]+a[i];
}
while(t--)
{
scanf(" %c",&ch);
if(ch=='C')
{
scanf("%d%d%d",&L,&R,&c);
add(L,c);add(R+,-c);
}
else
{
scanf("%d%d",&L,&R);
printf("%lld\n",(query(R)+s[R])-(query(L-)+s[L-]));
}
}
return ;
}

最新文章

  1. CSS3的新属性的一下总结
  2. Linux中cp和scp命令的使用方法
  3. iOS多线程编程之NSOperation和NSOperationQueue的使用(转自容芳志专栏)
  4. JavaScript----函数的封装、继承和多态
  5. SSH学习笔记目录
  6. 简单的代码实现的炫酷navigationbar
  7. sed修炼系列(一):花拳绣腿之入门篇
  8. iot-web增加apis-namespace组件
  9. 基于FastJson的通用泛型解决方案
  10. 29.Mysql监控
  11. js中的行为委托和无类编程
  12. kubernetes1.3搭建dns服务
  13. ubuntu apt-get failed
  14. Mysql 创建数据库命令
  15. C#泛型的学习
  16. JUC原子类 1
  17. 20145206邹京儒MSF基础应用
  18. jQuery:(一)jQuery简介
  19. 第三方库(JSONModel)出现file not found
  20. angularjs 定时器 销毁

热门文章

  1. POJ 1944 Fiber Communications (枚举 + 并查集 OR 线段树)
  2. 【VUE】@click加上v-bind绑定切换类名及动画事件
  3. HDU 2891
  4. learning uboot auto switch to stanbdy system in qca4531 cpu
  5. sgu101 欧拉路径 难度:1
  6. bzoj2438
  7. 数据结构(C语言)关于树、二叉树、图的基本操作。
  8. 【LeetCode 234_链表】Palindrome Linked List
  9. 2019.1.3 WLAN 802.11 a/b/g PHY Specification and EDVT Measurement I - Transmit Power Level
  10. HDU 1589 Stars Couple(计算几何求二维平面的最近点对和最远点对)