首页 > 其他分享 >有趣的求和(前缀和)

有趣的求和(前缀和)

时间:2024-07-19 11:54:47浏览次数:7  
标签:前缀 求和 30 个数 50 40 int 有趣 80

描述

给出n个数排成一排,你可以任意选出连续的L个数字求和。例如:
n=5 L = 4
-20 30 80 50 40
连续取L个数的方法有两种。
1、取前4个数-20 30 80 50 和为140。
2、取后4个数30 80 50 40 和为200。
请你找出最大和是多少,上例结果应该为200。

输入描述

第1行为两正整数n和L表示数列数字个数和取的长度;
第2行n个整数空格分隔,表示数列中的每个元素,数字在-100到100之间的整数。

输出描述

输出一个整数,最大的数字和。

样例输入 1 

5 4
-20 30 80 50 40

样例输出 1 

200

提示

数据范围与提示

30%的数据1≤L≤n≤100。
50%的数据1≤L≤n≤10000。
100%的数据 1≤L≤n≤1000000。

上代码!

#include<bits/stdc++.h>
using namespace std;
long long a[5000001],s[5000001]={};
int main(){
    int n,m,x,y,max=-100000,b,t;
    cin>>n>>m;
        for(int i=1;i<=n;i++){
            cin>>a[i];
            s[i]=s[i-1]+a[i];
        }
  b=m;
    for(int i=0;i<=n-m;i++){
        t=s[b]-s[i];
        if(t>max){
            max=t;
            x=i+1;
            y=i+m;
        }
        b++;
    }
    
    cout<<max;
    return 0;
}

标签:前缀,求和,30,个数,50,40,int,有趣,80
From: https://blog.csdn.net/2401_83736789/article/details/140544976

相关文章

  • 一些有趣的代码注释
    在网上冲浪的时候看到了一些很好玩的注释,分享一波~用处:好玩,例如放到SpringBoot的banner里,输出到浏览器控制台里…‍佛祖保佑/***_ooOoo_*o8888888o*88"."88*......
  • 题解:B3646 数列前缀和 3
    分析板子题,线段树维护矩阵区间积,除了难写没什么思维难度。所以直接放代码吧。Code#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;inlineintread(){ intx=0,f=1;charch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getcha......
  • C#8 中有趣的的索引和范围特性
    C#8中有趣的的索引和范围特性vararray=newint[]{3,4,6,4,52,63,5,545,4,345,5,52,6};Debug.Log(array[^5]);Debug.Log(array[5..8].Length);使用这些索引和范围特性可以让您更方便地访问和操作数组、列表或字符串中的元素。它们不仅可以提高......
  • 前缀和 & 差分
    前缀和一维前缀和一维前缀和主要用于计算任意区间的元素和。计算前缀和sum[i]=sum[i-1]+a[i];计算区间[l,r]的元素和s=sum[r]-sum[l-1];二维前缀和二维前缀和是一种用于快速计算二维数组中任意子矩阵元素之和。//计算矩阵的前缀和s[x][y]=s[x-1......
  • Stream流求和
    Stream流对List<Object>和Set<Object>求和泛型为Integer、Long、Double、BigDecimal的求和使用reduce+orElseIntegersum=scores.stream().reduce(Integer::sum).orElse(0);Longsum=scores.stream().reduce(Long::sum).orElse(0L);Doublesum=scores.stream().r......
  • Java——N以内累加求和
    2024/07/151.题目2.错误3.分析4.答案1.题目2.错误importjava.util.Scanner;publicclassMain{ publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in); intN=scanner.nextInt(); intsum=0; while(N<=1000){ for(......
  • P9963前缀和_数学推导解法
    P9963前缀和数学推导解法\(\operatorname{E}{\sum\limits_{i=1}^n[l\ley_i\ler]}\\=\sum\limits_{i=1}^n\operatorname{E}[l\ley_i\ler]\\=\sum\limits_{i=1}^n\operatorname{E}[l\le\sum\limits_{j=1}^ix_j\ler]\\=\sum\limits_{i=1}^n\operatorna......
  • Equal Cut (AtCoder - arc100_b)(前缀和,思维)
    题目来源:https://atcoder.jp/contests/abc102/tasks/arc100_b?lang=en//题意:将一串数字分为四段,求出每段的总和,怎么分,才能让这四段的各自总和的极差最小?//思路:“实在是想不出来好的算法,只会暴力,当时想的枚举中间的那一刀,然后左右二分,但是感觉也不太好写,毕竟我总是被二分的边界......
  • 最大值(前缀和)
    第1题   最大值 查看测评数据信息在一个遥远的星球上,有n个特殊的饮水器,它们按照从1到n的顺序排列。每个饮水器都有一个内置的储水罐,初始时第i个饮水器的储水罐中有A[i]单位的水。这个星球的居民有一种特殊的能力,他们可以进行不超过k次的水流转移操作。每次操......
  • Excel第29享:基于sum嵌套sumifs的多条件求和
    1、需求描述如下图所示,现要统计12.17-12.23这一周各个人员的“上班工时(a1)”。下图为系统直接导出的工时数据明细样例。2、解决思路首先,确定逻辑:“对多个条件(日期、人员)进行“工时”列求和”。故选择sumifs函数,由于是“日期”字段有多个数值,故与sum函数嵌套使用;其次,sumif......