【算法模板】前缀和与差分

news/2024/11/15 1:02:41/

前缀和🎈       

输入一个长度为 n 的整数序列。

接下来再输入 m 个询问,每个询问输入一对 l,r。

对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。

输入格式

第一行包含两个整数 n 和 m。

第二行包含 n 个整数,表示整数数列。

接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。

输出格式

共 m 行,每行输出一个询问的结果。

数据范围

1\leq l\leq r\leq n,

1\leq n,m \leq 100000,

-1000 \leq x \leq1000(x为数列中元素的值)

输入样例:

5 3
2 1 3 6 4
1 2
1 3
2 4

 输出样例:

3
6
10

AC Code 

if __name__ == "__main__":n, m = map(int, input().split())nums = list(map(int, input().split()))prefix = [0] * (n + 10)for i in range(n):prefix[i+1] = prefix[i] + nums[i]  # 求前缀和for i in range(m):l, r = map(int, input().split())print(prefix[r] - prefix[l-1])  # 求部分和

差分🎈

输入一个长度为n的正数序列。

接下来每输入m个操作,每个操作包含三个整数l,r,c,表示将序列中的[l, r]之间的每个数加上c。

请你输出进行完所有操作后的序列。

输入格式

第一行包含两个整数n和m。

第二行包含n个整数,表示整数序列。

接下来m行,每行包含三个整数l,r,c,表示 一个操作。

输出格式

共一行,包含n个整数,表示最终序列。

数据范围

1 \leq n,m \leq 100000,

1 \leq l \leq r\leq n,

-1000 \leq c \leq 1000,

-1000 \leq x \leq 1000(x表示整数序列中元素的值)

输入样例:

6 3
1 2 2 1 2 1
1 3 1
3 5 1
1 6 1

输出样例:

3 4 5 3 4 2

AC Code 

def insert(b, l, r, c):b[l] += cb[r+1] -= cif __name__ == "__main__":n, m = map(int, input().split())a = [0] * (n + 10)  # 原值数组b = [0] * (n + 10)  # 差分数组nums = list(map(int, input().split()))for index, val in enumerate(nums):a[index+1] = valfor i in range(1, n+1):  # 强烈建议都从 1 开始insert(b, i, i, a[i])while m > 0:m -= 1l, r, c = map(int, input().split())insert(b, l, r, c)for i in range(1, n+1):b[i] += b[i-1]for i in range(1, n+1):print(b[i], end=" ")

http://www.ppmy.cn/news/38225.html

相关文章

RocketMQ学习笔记:消息发送模式

这是本人学习的总结,主要学习资料如下 马士兵教育 目录1、消息发送模式2、消息消费模式3、顺序消息的消费和发送3.1、全局顺序3.2、部分顺序3.3、部分顺序代码样例3.3.1、依赖3.3.2、发送信息3.3.3、接受信息4、延时消息的消费和发送4.1、代码样例5、批量发送消息5…

【系统可靠性】搭建可靠性系统工程实践

系统可靠性:互联网时代的挑战 SLA保证 事故时长45 分钟内--4个9 事故时长5小时--打破 3个9的承诺 事故细节:亚马逊 6 页纸 技术细节 系统可靠性 影响半径---->从低往上扩大;从上往下是依赖;单节点是root caus…

C++ [内存管理]

本文已收录至《C语言》专栏! 作者:ARMCSKGT 目录 前言 正文 计算机中内存分布 C语言的内存管理 内存申请函数 内存释放函数 C内存管理 new操作符 delete操作符 特性总结 注意 原理探究 operator new和operator delete函数 operator new的底层…

Java on VS Code 3月更新|AWT 代码补全、启动程序消息显示与 Spring Apps 数据可视化改进

作者:Nick Zhu - Senior Program Manager, Developer Division at Microsoft 排版:Alan Wang 大家好,欢迎来到我们的三月更新!在此博客中,我们将为您带来一系列基础编码体验的改进,例如 AWT 项目相关的代码…

关于Stanza工具包的使用

目录 一、Stanza简要介绍 二、Stanza使用 2.1 安装方法 2.2 使用说明 2.2.1 以英文文本说明: 2.2.2 以中文文本说明: 一、Stanza简要介绍 Stanza是一个Python自然语言处理工具包,它是斯坦福自然语言处理工具的升级版。它提供了一系列的…

anomalib代码解析之三:训练过程

咱们吃个回头草吧 上面的图中,第55行,藏有玄机。前面我们没详细讲。就是这行,指定了,cfa算法,怎么训练的,算法实现细节都在这里。 那我们就得看get_model函数了: def get_model(config: DictC…

Python矩阵分解之QR分解

文章目录QR和RQ分解其他函数QR和RQ分解 记AAA为方阵,P,QP, QP,Q分别为正交单位阵和上三角阵,则形如AQRAQRAQR的分解为QR分解;形如ARQARQARQ的分解为RQ分解。 在scipy.linalg中,为二者提供了相同的参数,除了待分解矩阵…

SPSS27破解安装后,出现应用程序无法正常启动(0xc000007b)

破解完SPSS 27软件后,点击图标出现下图错误 可以尝试以下方法: 1. 在安装目录下找到VC开头的文件夹 2. 点击此软件进行修复 若修复完成,重新启动SPSS软件即可。 3. 若提示错误,显示如下界面,进行下面的方法 4. 下…