首页 > 其他分享 >前缀和

前缀和

时间:2023-12-21 22:22:47浏览次数:20  
标签:前缀 int y1 static scanner new Scanner

//求某个数组某一段的和
//s[i] = s[i-1]+a[i];
//同理:正方形矩阵求S[i,j]:S[i,j] = S[i-1,j]+S[i,j-1]-S[i-1,j-1]+a[i,j]
//求子矩阵的和s[x2,y2]-s[x2,y1-1]-s[x1-1,y2]-s[x1-1,y1-1];
import java.util.Scanner;

public class Main{
    static final int N = 100010;
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int m = scanner.nextInt();
        int n = scanner.nextInt();
        int a[] = new int[N];
        int s[] = new int[N];
        s[0] = 0;
        for(int i = 1;i<=m;i++){
            a[i] = scanner.nextInt();
        }
        for(int i = 1;i<=m;i++){
            s[i] = s[i-1]+a[i];
        }
        while(n!=0){
            n--;
            int l = scanner.nextInt();
            int r = scanner.nextInt();
            System.out.println(s[r]-s[l-1]);
        }
        scanner.close();
    }
}

 

标签:前缀,int,y1,static,scanner,new,Scanner
From: https://www.cnblogs.com/muzhaodi/p/17920255.html

相关文章

  • 离散化,前缀和,差分
    离散化,前缀和,差分一维前缀和和差分之前学过不再记录二维情况前缀和多维前缀和的普通求解方法几乎都是基于容斥原理例如有这样一个矩阵,可以视为二维数组:124351246359定义一个矩阵\(sum\)使得\(sum_{x,y}=\sum_{i=1}^{x}\sum_{j=1}^{y}a_{i,j}\)那么这个矩阵......
  • 【模版】前缀和
    问题引入:【洛谷P8218】##题目描述给定$n$个正整数组成的数列$a_1,a_2,\cdots,a_n$和$m$个区间$[l_i,r_i]$,分别求这$m$个区间的区间和。对于所有测试数据,$n,m\le10^5,a_i\le10^4$ 最朴素的想法,就是对于每次询问,我们都用for循环进行$[l_i,r_i]$区间的求和,不难......
  • 莫比乌斯函数平方前缀和
    考虑求\(\sum_{i=1}^n\mu(i)^2\)结论是\(\mu(i)^2=\sum_{j^2|i}\mu(j)\)考虑证明这个式子。先证明若\(\mu(i)\neq0\)此时\(\mu(i)^2=1\)显然只有\(j=1\)在右式造成贡献\(1\)等式成立。若存在\(j\neq1\)也在右式造成贡献,那么显然\(i\)有次数\(\ge2\)质因子了\(\mu(i)=0\)与......
  • 枚举子集&高维前缀和学习笔记
    枚举子集首先\(n\)位二进制数可以表示一个大小为\(n\)的集合的所有子集。接下来的问题均用二进制数展开。一种暴力的想法是枚举所有数然后判一下是否满足条件,单次时间复杂度\(O(2^n)\),对所有数做一遍就是\(O(4^n)\)。发现有很多枚举是无用的,考虑怎么样让每次枚举出来的都......
  • 前缀和,差分,二叉堆
    目录前缀和一维数组前缀和二维数组前缀和差分二叉堆前缀和一维数组前缀和代码如下:for(inti=0;i<n;i++){if(i==0)y[i]=x[i];elsey[i]=y[i-1]+x[i];}或者for(inti=1;i<=n;i++){y[i]=y[i-1]+x[i];}二维数组前缀和代码如下:for(inti=1;i<=n;i++){f......
  • 【算法】【线性表】最长公共前缀
    1 题目给k个字符串,求出他们的最长公共前缀(LCP)样例1:输入:k个字符串=["ABCD","ABEF","ACEF"]输出:"A"解释:公共最长前缀是"A".样例2:输入:k个字符串=["ABCDEFG","ABCEFG","ABCEFA"]输出:"ABC&q......
  • 高维前缀和
    对于求高维前缀和,我的理解是在维度数乘总点数的复杂度下求前缀和。首先可以先看看二维前缀和。如果使用容斥的方法,像这样:for(inti=1;i<=n;i++){ for(intj=1;j<=m;j++){ f[i][j]=a[i][j]+f[i-1][j]+f[i][j-1]-f[i-1][j-1]; }}那么就是\(2^w\timesn\timesm\)。(\(w\)是......
  • 刷题 字典树 LCP(最长公共前缀)
    2023.12.5cf1902E字典树的功能根据字典树的概念,我们可以发现:字典树的本质是把很多字符串拆成单个字符的形式,以树的方式存储起来。所以我们说字典树维护的是”字典“。那么根据这个最基本的性质,我们可以由此延伸出字典树的很多妙用。简单总结起来大体如下:1、维护字符串集合(即......
  • 2023年广东工业大学腾讯杯新生程序设计竞赛不知道叫什么名字(前缀和)
    需要的是男生女生数量相同,做个转化,女生变成-1,然后求一遍前缀和,我们希望找到最长的满足\(sum(l,r)=0\)的区间也就是\(sum(r)-s(l-1)=0\)考虑枚举右端点,找到最左端和它相等的sum就是对于当前右端点的最长的。最开始想了个二分答案的假做法,011100,这里答案是6,长度为4不满足......
  • 前缀和/差分——acwing算法基础课笔记
    个人笔记,欢迎补充,指正。一维前缀和对于数组:a[1],a[2],a[3]...a[n];其前缀和数组为s[i]=a[1]+a[2]+...+a[i];下标必须从1开始求前缀和1for(inti=1;i<n;++i)2s[i]=s[i-1]+a[i];s[0]需要定义为0作用求原数组里一段数(l,r)的和......