luoguP2826 LJJ的数学课
思路
把公式拆开维护两个值,一个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;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战