思路

把公式拆开维护两个值,一个a[i]的总和,一个a[i]*i的总和

也可以用树状数组维护,模板题

代码

#include <iostream>
#include <vector>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#define ls rt<<1
#define rs rt<<1|1
#define ll long long
#define FOR(i,a,b) for(int i=a;i<=b;++i)
using namespace std;
const int maxn = 1e5 + 7;
int read() {
int x = 0, f = 1; char s = getchar();
for (; s < '0' || s > '9'; s = getchar()) if (s == '-') f = -1;
for (; s >= '0' && s <= '9'; s = getchar()) x = x * 10 + s - '0';
return x * f;
}
int n,m,a[maxn];
struct node {
int l,r,size;
ll sum1,sum2;
}e[maxn<<2];
void pushup(int rt) {
e[rt].sum1=e[ls].sum1+e[rs].sum1;
e[rt].sum2=e[ls].sum2+e[rs].sum2;
}
void build(int l,int r,int rt) {
e[rt].l=l,e[rt].r=r,e[rt].size=r-l+1;
if(l==r) {
e[rt].sum1=a[l];
e[rt].sum2=a[l]*l;
return;
}
int mid=(l+r)>>1;
build(l,mid,ls);
build(mid+1,r,rs);
pushup(rt);
}
void modfity(int L,int k,int rt) {
if(e[rt].l==e[rt].r) {
e[rt].sum1+=k;
e[rt].sum2=e[rt].sum1*L;
return;
}
int mid=(e[rt].l+e[rt].r)>>1;
if(L<=mid) modfity(L,k,ls);
else modfity(L,k,rs);
pushup(rt);
}
ll query_1(int L,int R,int rt) {
if(L<=e[rt].l&&e[rt].r<=R) {
return e[rt].sum1;
}
int mid=(e[rt].l+e[rt].r)>>1;
ll ans=0;
if(L<=mid) ans+=query_1(L,R,ls);
if(R>mid) ans+=query_1(L,R,rs);
return ans;
}
ll query_2(int L,int R,int rt) {
if(L<=e[rt].l&&e[rt].r<=R) {
return e[rt].sum2;
}
int mid=(e[rt].l+e[rt].r)>>1;
ll ans=0;
if(L<=mid) ans+=query_2(L,R,ls);
if(R>mid) ans+=query_2(L,R,rs);
return ans;
}
int main() {
n=read(),m=read();
FOR(i,1,n) a[i]=read();
build(1,n,1);
FOR(i,1,m) {
int k=read(),x=read(),y=read();
if(k==1) {
modfity(x,y,1);
} else {
ll ans=query_1(x,y,1)*(y+1)-query_2(x,y,1);
printf("%lld\n",ans);
}
}
return 0;
}

luoguP2826 LJJ的数学课的更多相关文章

  1. 洛谷P2826 LJJ的数学课

    题目背景 题目描述(本题是提高组第二题难度+) 题目描述 \(LJJ\)又要开始上数学课啦!(\(T1\),永恒不变的数学) \(LJJ\)的\(Teacher\)对上次的考试很不满意(其实是出题人对 ...

  2. 洛谷OJ P2846 LJJ的数学课

    题目链接:传送门 题目大意:略 题目思路:线段树or树状数组 我们可以将区间值做一些调整.a*3+b*2+c=a+(a+b)+(a+b+c) 也就是利用前缀和建树.然后单点更新也就转换成了区间更新.修 ...

  3. 2018年12月25&26日

    小结:昨天因为整理课件,调代码耗费了大量时间,所以没来得及整理作业,这两天主要做的题目是关于树链剖分和线段树的,难度大约都是省选难度,毕竟只要涉及到树链剖分难度就肯定不低. 一. 完成的题目: 洛谷P ...

  4. NOIP模拟赛---1.生气的LJJ (anger)

    LJJ刚上完了一节课!这节课是数学课!他知道了加减属于一级运算,乘除属于二级运算,幂则属于三级运算,而幂的优先级>乘除的优先级>加减的优先级(这是几年级的数学课).但是,从上一套试卷+上一 ...

  5. bzoj 4399 魔法少女LJJ

    4399: 魔法少女LJJ Time Limit: 20 Sec  Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?i ...

  6. BZOJ4399魔法少女LJJ——线段树合并+并查集

    题目描述 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了LJJ感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处散发着醉人的奶浆味: ...

  7. 「LOJ6482」LJJ爱数数

    「LOJ6482」LJJ爱数数 解题思路 : 打表发现两个数 \(a, b\) 合法的充要条件是(我不管,我就是打表过的): \[ a + b = \text{gcd}(a, b)^2 \] 设 \( ...

  8. BZOJ4399 魔法少女LJJ【线段树合并】【并查集】

    Description 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女LJJ已经觉得自己见过世界上的所有稀奇古怪的事情了 LJJ感叹道"这里真是个迷人的绿色世界,空气清新.淡雅 ...

  9. 魔法少女 LJJ——线段树

    题目 [题目描述] 在森林中见过会动的树,在沙漠中见过会动的仙人掌过后,魔法少女 LJJ 已经觉得自己见过世界上的所有稀奇古怪的事情了. LJJ 感叹道“这里真是个迷人的绿色世界,空气清新.淡雅,到处 ...

随机推荐

  1. webstorm的使用技巧——1

    由于光标是在使用中突然发生变化,推测是碰到了快捷键,因此断定有快捷键可以修改.后来,无意中碰到了“Insert”键,于是光标立即发生了变化,“黑块矩形”变成“小竖线”.由此知道,insert键可以使光 ...

  2. 【Python】web.py-简单轻量级网页框架python

    简单轻量级网页框架python web.py的安装 python 3.x中安装web.py 最近决定从python2.7转移到3.x上工作. 使用数据库的时候,依然选用了之前比较感兴趣的web.py ...

  3. python就业班-淘宝-目录.txt

    卷 TOSHIBA EXT 的文件夹 PATH 列表卷序列号为 AE86-8E8DF:.│ python就业班-淘宝-目录.txt│ ├─01 网络编程│ ├─01-基本概念│ │ 01-网络通信概述 ...

  4. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  5. mysql备份工具innobackupex,xtrabackup-2.1的原理和安装

    mysql备份工具innobackupex,xtrabackup-2.1的原理和安装 http://bbs.2cto.com/read.php?tid=310496 一.Xtrabackup介绍 1. ...

  6. 【剑指offer】合并两个排序的链表

    一.题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 二.思路: 递归思想,首先判断一方为空的情况,一方为空则直接返回另一方.都不为空时,首先找到表 ...

  7. qsv转换为mp4

    1:下载  装换工具:http://www.downza.cn/soft/27484.html 2:双击打开exe可执行程序. 3:添加要转换的文件,和转换后要存储的位置 4:开始转换,转换为flv格 ...

  8. latex 安装和使用

    1:下载 texlivewindows 版  http://tug.org/texlive/acquire-netinstall.html 2:双击exe文件进行安装,安装时选择 将路径添加到环境变量 ...

  9. poj1753Flip Game(dfs)

    Flip Game  思想很不成熟, #include <stdio.h>#include <string.h>#include <stdlib.h>int map ...

  10. loadrunner 接口性能脚本编写(Get请求和Post请求)

    前段时间接触了一下loadrunner的接口性能测试,然后尝试了一下手动编写脚本,毕竟录制这种东西,不是每次都能通的,而且录制下来的脚本,通常是有很多其他杂七杂八的请求夹杂在中间,没有达到真正的压测接 ...