当前位置: 首页 > article >正文

洛谷P4868 Preprefix sum

洛谷传送门

题目描述

前缀和(prefix sum)𝑆𝑖=\sum a_{i}

前前缀和(preprefix sum)则把 𝑆𝑖 作为原序列再进行前缀和。记再次求得前缀和第 𝑖 个是 𝑆𝑆𝑖。

给一个长度 𝑛 的序列 𝑎1,𝑎2,⋯ ,𝑎𝑛有两种操作:

  1. Modify i x:把 𝑎𝑖 改成 𝑥。
  2. Query i:查询 𝑆𝑆𝑖。

输入格式

第一行给出两个整数 𝑁,𝑀。分别表示序列长度和操作个数。
接下来一行有 𝑁 个数,即给定的序列 𝑎1,𝑎2,⋯ ,𝑎𝑛​。
接下来 𝑀 行,每行对应一个操作,格式见题目描述。

输出格式

对于每个询问操作,输出一行,表示所询问的 𝑆𝑆𝑖 的值。

输入输出样例

输入

5 3
1 2 3 4 5
Query 5
Modify 3 2
Query 5

输出 

35
32

说明/提示

1≤𝑁,𝑀≤1e5,且在任意时刻 0≤𝐴𝑖≤1e5。

题目解读

        由题意知,题目的意思就是求前缀和的前缀和,下面是一个酣畅淋漓的数学推理

数学推理

        举个例子:

         

//对于   1 2 3 4 5
//   a[]=1 2 3 4 5
//s[1]=1
//s[2]=1+2
//s[3]=1+2+3
//s[4]=1+2+3+4
//s[5]=1+2+3+4+5
//ss[5]=s[1]+s[2]+s[3]+s[4]+s[5]
//     =1*5++2*(5-1)+3*(5-2)+4*(5-3)+5*(5-4)

 

        依此类推,我们可以发现ss_{k}=\sum (k-i+1)a_{i}=k\sum a_{i}-\sum(i-1)a_{i}

方法

        我们用两个树状数组 c 与 c1,分别维护\sum a_{i}( k 为常数不管),\sum (i-1)a_{i}

Code

#include<bits/stdc++.h>
using namespace std;
const long long N=1e5+5;
long long n,m,a[N],c[N],c1[N],id[N],ni[N];
long long lowbit(long long x){return (-x)&x;}
void add(long long x,long long y){for(;x<=n+1;x+=lowbit(x))c[x]+=y;}//将 c[x] 加上 y
void add1(long long x,long long y){for(;x<=n+1;x+=lowbit(x))c1[x]+=y;}//将 c1[x] 加上 y
long long sum(long long x){//求 c 的前缀和
	long long ret=0;
	for(;x;x-=lowbit(x))ret+=c[x];
	return ret;
}
long long sum1(long long x){//求 c1 的前缀和
	long long ret=0;
	for(;x;x-=lowbit(x))ret+=c1[x];
	return ret;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		add(i,a[i]-0);add1(i,(i-1)*(a[i]-0));//分别向 c 和 c1 加入 a[i] 和 (i-1)*a[i]
	}
	string t;int x,y;
	for(int i=1;i<=m;i++){
		cin>>t;
		if(t=="Query"){
			cin>>x;
			cout<<x*sum(x)-sum1(x)<<'\n';//输出结果
		}
		else{
			cin>>x>>y;
			add(x,y-a[x]);add1(x,(x-1)*(y-a[x]));//修改
			a[x]=y;
		}
	}
	return 0;
}


http://www.kler.cn/a/510746.html

相关文章:

  • 2025年1月17日(点亮三色LED)
  • 5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署
  • R数据分析:有调节的中介与有中介的调节的整体介绍
  • C# 修改项目类型 应用程序程序改类库
  • 流程与管理篇:IPD核心思想与框架
  • 无降智o1 pro——一次特别的ChatGPT专业模式探索
  • 基于ESP32+VUE+JAVA+Ngnix的一个小型固件编译系统
  • Top期刊算法!RIME-CNN-BiLSTM-Attention系列四模型多变量时序预测
  • 最新版Edge浏览器加载ActiveX控件技术——allWebPlugin中间件之awp_CreateActiveXObject接口用法
  • hydra破解密码
  • USB3020任意波形发生器4路16位同步模拟量输出卡1MS/s频率 阿尔泰科技
  • FPGA 时钟功能
  • 到底应不应该使用@Builder
  • 【Linux系统编程】—— 虚拟内存与进程地址空间的管理:操作系统如何实现内存保护与高效分配
  • 算法日记6.StarryCoding P52:我们都需要0(异或)
  • Hugging Face功能介绍,及在线体验文生图模型Flux
  • 202509读书笔记|《飞花令·山》——两岸猿声啼不住,轻舟已过万重山
  • Solidity04 Solidity值类型
  • LLMs之Dataset:中文互联网基础语料2.0的简介、下载和使用方法、案例应用之详细攻略
  • 【2024年华为OD机试】 (B卷,100分)- 字符串分割(Java JS PythonC/C++)
  • 【服务器】Ubuntu22.04配置静态ip
  • 【论文阅读】End-to-End Adversarial-Attention Network for Multi-Modal Clustering
  • 第13章:Python TDD完善货币加法运算(二)
  • 【MyDB】3-DataManager数据管理 之 4-数据页缓存
  • 综述:大语言模型在机器人导航中的最新进展!
  • 【机器学习】机器学习引领数学难题攻克:迈向未知数学领域的新突破