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;
}

posted @   ComplexPug  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
阅读排行:
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战
点击右上角即可分享
微信分享提示