P14 前缀和原理和特点

prefix表示前缀和,前缀和由一个用户输入的数组生成

prefix可以用于快速生成prefix

prefix可以o(1)求数组a[]的一段区间的和;

sum(l,r)=prefix[r]-prefix[l-1]

prefix是一种预处理算法,只适用于a数组为静态数组的情况,即a数组中的元素查询不会变、

实现前缀和:

prefix[i]=prefix[i-1]+a[i]

a[0]=0

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p=1e9+7;
const int N=1e5+10;
ll a[6][N],prefix[6][N];
int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[1][i];}for(int i=2;i<=5;i++)for(int j=1;j<=n;j++){a[i][j]=a[i-1][j]*a[1][j];}for(int i=1;i<=5;i++)for(int j=1;j<=n;j++){prefix[i][j]=prefix[i][j-1]+a[i][j];}while(m--){int l,r,k;cin>>l>>r>>k;cout<<(prefix[k][r]-prefix[k][l-1])%p<<endl;}return 0;
}

计算前缀和是指对于一个数组,计算出其每个位置之前的所有元素之和。在这个例子中,我们使用了前缀和数组来存储数组a的前缀和。 前缀和可以通过以下方式计算: 1. 创建一个新的数组prefix,大小与原数组相同。 2. 对于数组中的每个元素,将其与前面的元素相加,并将结果存储到prefix数组中的对应位置。 3. 最终,prefix数组中的每个元素都是原数组中该位置之前所有元素的和。 在这个例子中,我们首先计算了数组a的各个次方。然后,通过嵌套循环将数组a的元素累加到前缀和数组prefix中。这样,prefix数组中的每个元素都是原数组a中对应位置之前所有元素的和。 通过计算前缀和,我们可以在O(1)的时间内得到任意两个位置之间的元素之和,而不需要每次都重新计算。这在处理多次查询时非常高效和方便。

使用了 `% q` 运算符来对结果进行取模操作。`% q` 指的是对结果进行 q 的取模运算,其中 q 是题目给定的模数。 在计算结果的过程中,我们需要对最终的结果进行取模操作,这是因为结果可能非常大,超出了计算机可以表示的范围。通过取模操作,我们可以保证结果在一个合理的范围内,同时仍然保持与原问题的等价性。 在这个例子中,我们对计算结果使用了 `% p`,其中 p 是题目给定的模数。通过对结果取模,可以确保结果始终在 0 到 p-1 的范围内。 取模运算有以下特性: - `(a + b) % p = (a % p + b % p) % p`,即取模运算可以在加法之前或之后进行。 - `(a * b) % p = (a % p * b % p) % p`,即取模运算可以在乘法之前或之后进行。 在代码中,我们使用这些特性来在计算前缀和数组时,更有效地计算数组的累加结果,并将其存储在 prefix 数组中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/691007.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

修复 Android 手机陷入恢复模式的 5 种方法

您的手机卡在 Android Recovery 模式且无法退出此模式&#xff1f;无论您按什么按钮组合&#xff0c;甚至在取出并重新插入电池后重新启动手机&#xff0c;手机都会启动回到恢复模式吗&#xff1f; Android卡在recovery模式的情况并不罕见&#xff0c;各种品牌的Android手机都…

极狐GitLab 如何配置多个 LDAP?

本文仅适用于极狐GitLab私有化部署场景。 场景化痛点 极狐GitLab 的多 LDAP 接入功能解决了企业在以下场景中可能遇到的痛点&#xff1a; 多个组织/部门的整合&#xff1a;在大型企业或跨国公司中&#xff0c;往往存在多个组织或部门&#xff0c;它们可能拥有独立的 LDAP 服务…

pytorch chunk的使用举例

在 PyTorch 中&#xff0c;chunk 是一个用于将张量&#xff08;tensor&#xff09;按指定维度进行切片的函数。它可以将一个张量切分成多个块。 下面是一个使用 chunk 函数的示例&#xff1a; python import torch # 创建一个大小为 (6, 8) 的张量 tensor torch.arange(48)…

LeetCode42.接雨水(单调栈)

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 &#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,…

OS X(MACOS) C/C++ 遍历系统所有的IP路由表配置。

以下源实现为遍历MAC苹果电脑系统上配置的所有IP路由表配置&#xff0c;回调 predicate 过滤函数只在 AF_INET(IPV4)的时候跳出&#xff0c;其它时不处理&#xff0c;人们可以根据自己的需求改动。 无需依赖MAC OS框架库提供的函数&#xff0c;最小依赖才有可能更容易移植代码到…

解决kkFileView4.4.0版本pdf、word不能预览问题

这里使用的是http下载流url预览&#xff0c;遇到的问题。 官方使用指南&#xff1a;kkFileView - 在线文件预览 1 前端测试代码 1.1 官方示例代码 1.2 本人测试代码 注意&#xff1a;要给预览文件的url进行编码encodeURIComponent(Base64.encode(previewUrl))。 <!DOCTYP…

Linux 驱动开发基础知识——LED 模板驱动程序的改造:设备树(十一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

【4.1计算机网络】TCP-IP协议簇

目录 1.OSI七层模型2.常见协议及默认端口3.TCP与UDP的区别 1.OSI七层模型 osi七层模型&#xff1a; 1.应用层 2.表示层 3.会话层 4.传输层&#xff1a;TCP为可靠的传输层协议。 5.网络层 6.数据链路层 7.物理层 2.常见协议及默认端口 3.TCP与UDP的区别 例题1. 解析&#xff1…

社区发现算法Louvain

&#xff08;1&#xff09; Louvain 方法通过优化模块度度量来找到网络中更密集内部连接的节点群体&#xff08;社区&#xff09;&#xff0c;这些群体比与网络的其余部分的连接更密切。 &#xff08;2&#xff09; Louvain 方法是一种社区检测算法&#xff0c;通常用于在网络…

Oracle12cR2之IMP与EXP命令行工具使用及参数说明

Oracle12cR2之IMP与EXP命令行工具使用及参数说明 文章目录 Oracle12cR2之IMP与EXP命令行工具使用及参数说明1. IMP命令行使用及参数说明1. IMP命令行使用2. IMP命令行参数说明 2. EXP命令行使用及参数说明1. EXP命令行使用2. EXP命令行参数说明 在Oracle数据库中&#xff0c;IM…

Swift Combine 使用 print 操作符调试管道 从入门到精通二十四

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

零基础入门金融风控-贷款违约预测Task2 数据分析

Task2 数据分析 此部分为零基础入门金融风控的 Task2 数据分析部分&#xff0c;带你来了解数据&#xff0c;熟悉数据&#xff0c;为后续的特征工程做准备&#xff0c;欢迎大家后续多多交流。 赛题&#xff1a;零基础入门数据挖掘 - 零基础入门金融风控之贷款违约 目的&#…

css3盒子

盒子模型 一.看透网页布局本质二.认识盒子三.盒子的边框&#xff08;border&#xff09;1.概念2.简写及分开写法3.合并问题&#xff08;会相加&#xff09;4.边框会影响盒子实际大小 四.盒子的内边距&#xff08;padding&#xff09;1.概念2.简写3.内边距会影响盒子实际大小4.特…

《白话C++》第10章 STL和boost,Page91 std::shared_ptr常用功能03

5. make_shard 使用上智能指针&#xff0c;就可以不用写“delete”这个关键字了&#xff0c;不过“new”这个关键字还的写 ... shared_ptr <Student> p(new Student); p->foo(); ... 这就回造成new和delete之间的对称性被严重破坏 标准库提供了make_shared方法&am…

沁恒CH32V30X学习笔记08---基本定时器超时功能

TIM 基本定时器 高级定时器模块包含一个功能强大的 16 位自动重装定时器(TIM1、TIM8、TIM9 和 TIM10) 通用定时器模块包含一个 16 位可自动重装的定时器(TIM2、TIM3、TIM4 和 TIM5) 基本定时器模块包含一个 16 位可自动重装的定时器(TIM6 和 TIM7) 定时器的结构大致可…

通过VSCode开发Python项目

一、插件准备 Python 插件&#xff0c;必须 autoDocstring 生成注释&#xff0c;和Pycharm一样输入三个引号"""会生产注释结构 Todo Tree 高亮显示 TODO/FIXME 二、python相关设置 一&#xff09;设置python环境 按"F1"打开命令面板&#xff08;…

在 SQL Server 中编写函数以获取年加周的字符串

在 SQL Server 中&#xff0c;有时候我们需要将日期转换为表示年份和周数的字符串。为了实现这个目标&#xff0c;我们可以编写一个简单的函数。下面是一个示例函数&#xff0c;该函数接受一个日期作为输入&#xff0c;并返回年份和周数的字符串。 CREATE FUNCTION dbo.GetYea…

Python 命令补全工具 argcomplete

1. 概述 在使用Python 命令或者 Python的命令行工具的时候&#xff0c;一个痛点是没有补全。比如python -m后面输入包名字&#xff0c;就没有提示&#xff0c;每次想运行一个http server的时候&#xff0c;都需要搜索一下http服务的包名。另外&#xff0c;像pip&#xff0c;pi…

《Docker极简教程》--Dockerfile--Dockerfile的基本语法

Dockerfile是一种文本文件&#xff0c;用于定义Docker镜像的内容和构建步骤。它包含一系列指令&#xff0c;每个指令代表一个构建步骤&#xff0c;从基础镜像开始&#xff0c;逐步构建出最终的镜像。通过Dockerfile&#xff0c;用户可以精确地描述应用程序运行环境的配置、依赖…

Redis第一关之常规用法

简介 Redis不用多说&#xff0c;已经火了很多年了&#xff0c;也用了很多年了。现在做一些归纳总结。 这篇文章主要介绍Redis的常规知识及用法&#xff0c;包括数据结构、使用场景、特性、过期机制、持久化机制。 Redis与Mysql Mysql是一款基于磁盘的关系型SQL数据库。 Redi…