首页 > 其他分享 >1.Prefix前缀和【模板】

1.Prefix前缀和【模板】

时间:2024-03-06 23:00:42浏览次数:23  
标签:10 前缀 int 样例 Prefix 数组 模板 描述

  • [[#题目描述|题目描述]]
  • [[#输入描述|输入描述]]
  • [[#输出描述|输出描述]]
  • [[#输入样例1|输入样例1]]
  • [[#输出样例1|输出样例1]]
  • [[#暴力穷举|暴力穷举]]
  • [[#前缀和数组|前缀和数组]]

题目描述

给定义一个数组a,有q次询问,对于每次询问:

给定两个整数l,r,求出${a_l}$ $+$${a_{l+1}}$ + ${\dots}$ +$a_r$​的结果。

输入描述

第一行一个整数表示样例个数T(1≤T≤10)

对于每组样例:

第一行22个整数n(1≤n≤105),q(1≤q≤105),分别表示数组长度和询问次数。

第二行n个整数,表示数组a(−109≤$a_i$​≤109)。

接下来q行,每行两个整数l,r(1≤l≤r≤n)表示询问的区间。

输出描述

对于每组样例,一行一个整数表示答案。

输入样例1

2
5 3
1 2 3 4 5
1 2
2 5
3 4
7 2
-1 9 -10 8 2 6 11
1 5
2 7

输出样例1

3
14
7
8
26

暴力穷举

  • 对每一个[l ,r]区间中的数都进行加和
  • 使用for循环进行计算
  • 最坏情况下n为10的5次方, q为10的5次方,l为1,r为10的5次方
  • 总共加和次数为10^10 数量级 对1000ms的数量级而言有点过于高了

前缀和数组

$$P_i = sum_{j=1}^i a_j = P_{i-1} + a_i$$

  • 于是便有以下的性质
  • image.png

Code

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

const int N = 1e5 + 9;
// 全局数组自动初始化为0
ll a[N], prefix[N];

int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int m;
  cin >> m;
  while (m--) {
    int n, q;
    cin >> n >> q;
    for (int i = 1; i <= n; ++i) cin >> a[i];
    for (int i = 1; i <= n; ++i) prefix[i] = prefix[i - 1] + a[i];
    while (q--) {
      int l, r;
      cin >> l >> r;
      cout << prefix[r] - prefix[l - 1] << '\n';
    }
  }
  return 0;
}

标签:10,前缀,int,样例,Prefix,数组,模板,描述
From: https://www.cnblogs.com/Phantasia/p/18057845

相关文章

  • 2.diff差分【模板】
    [[#差分数组|差分数组]][[#差分数组#三个数组的关系|三个数组的关系]][[#题目描述|题目描述]][[#输入描述|输入描述]][[#输出描述|输出描述]][[#输入样例1|输入样例1]][[#输出样例1|输出样例1]]差分数组如下叫做差分数组\[d_{i}=a_{i}-a_{i-1}\]又有\[\su......
  • 简单实现邮件模板功能
    系统中经常有需要发送提醒邮件的需求,而且邮件类型和内容往往又不同,有些还需要跟业务字段做关联。这种情况下,就需要用到邮件模板功能,可以通过在模板中定义业务字段标记,通过模板引擎或自定义代码来实现这些字段的填充。下面是一个自己写的简单的,字符串替换方式实现的邮件模板功能。......
  • 前缀和
    记录10:072024-3-4目录1.前缀和1.一维前缀和2.二维前缀和1.前缀和1.一维前缀和数组A[x](下标从1开始)前缀和S[0]=0S[i]=S[i-1]+A[i]2.二维前缀和数组A[x][y](下标从1开始)前缀和S[i][j]表示以(i,j)为右下角的矩形中所有元素的和S[i][0]=S[0][j]=0S[i][......
  • Maven安装本地的jar包和创建带模板的自定义项目
    Maven安装本地的jar包如果没配置Maven的环境变量,需要先CD到maven的安装目录,因为没配置环境变量,mvn命令是无法在maven安装目录以外的目录运行。cdC:\Maven\apache-maven-3.6.3\bin然后执行下面命令格式如下:mvninstall:install-file//固定格式,maven的语法-Dfile=ali......
  • 二分搜索模板
    目录最基本的二分搜索寻找左边界的二分搜索寻找右边界的二分搜索统一记忆为闭区间,只需要修改nums[mid]==target时收缩哪边边界,以及越界情况最基本的二分搜索defbinary_search(nums:List[int],target:int):left=0right=len(nums)-1while(left<=right):......
  • WPF 样式与模板
    参考样式和模板如何为控件创建样式如何为控件创建模板ContentPresenter环境软件/系统版本说明WindowsWindows10专业版22H219045.4046MicrosoftVisualStudioMicrosoftVisualStudioCommunity2022(64位)-17.6.5Microsoft.NetSDK8.0.10......
  • P3369 【模板】普通平衡树
    原题链接题解1stl模拟,注意lowerbound的效果和pos的返回值code1#include<bits/stdc++.h>usingnamespacestd;vector<int>a;intmain(){intn;cin>>n;while(n--){intop,x;cin>>op>>x;if(op==1)a.inser......
  • 给大家推荐一款基于Vue3通用型后台管理模板
    ​ 给大家推荐一款基于Vue3通用型后台管理模板这款Vue3后台管理模板介绍如下:        使用Vue3、Vite、ElementPlus、Pinia最新开发技术栈,拥有完整的Token登录鉴权、路由配置、界面简洁美观,可根据需要灵活配置主题、系统采用响应式布局,自适应各类屏幕尺寸、源代码有......
  • 代码模板
    贴这里,防丢。会更新算法模板,坑会慢慢填。写题模板/*Author:Rainypaster(lhy)Time:File:Email:[email protected]*/#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<bits/stdc++.h>usingna......
  • 【基础算法】前缀和
    前缀和为什么要学前缀和?例题:一维前缀和暴力解法#include<bits/stdc++.h>usingnamespacestd;constintN=100010;intn,m;inta[N];intmain(){ cin>>n>>m; for(inti=1;i<=n;i++)cin>>a[i]; while(m--) { intl,r; cin>&......