首页 > 其他分享 >最大值(前缀和)

最大值(前缀和)

时间:2024-07-14 20:51:28浏览次数:20  
标签:前缀 非负 int 最大值 long 最多能 饮水器

第1题     最大值 查看测评数据信息

在一个遥远的星球上,有 n 个特殊的饮水器,它们按照从 1 到 n 的顺序排列。每个饮水器都有一个内置的储水罐,初始时第 i 个饮水器的储水罐中有 A[i] 单位的水。

这个星球的居民有一种特殊的能力,他们可以进行不超过 k 次的水流转移操作。每次操作,他们可以选择一个饮水器(编号为 x,满足 1 <= x < n),并将其中的所有水通过特殊管道倒入它后面的一个饮水器(编号为 x+1)。

最终,居民们可以选择任意一个饮水器,并喝掉其中的所有水。现在,他们想知道通过合理的操作,他们最多能喝到多少单位的水。

输入格式

 

第一行一个正整数 n,表示饮水器的数量。

第二行一个非负整数 k,表示操作次数的上限。

第三行 n 个非负整数,用空格隔开,表示每个饮水器初始的储水量 A[1], A[2], ..., A[n]。

保证 1<=n<=1e6,0<= k <=n-1,0<= A[i]<= 1e3

 

输出格式

 

一行,仅一个非负整数,表示居民们最多能喝到的水的单位数。

 

输入/输出例子1

输入:

10

5

890 965 256 419 296 987 45 676 976 742

 

输出:

3813

 

样例解释

 

 

考场秒想到,不讲了。

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;

int n, k;
long long a[N], s[N], ans=0;
int main()
{
	scanf("%d%d", &n, &k);
	for (int i=1; i<=n; i++) 
	{
		scanf("%lld", &a[i]);
		s[i]=s[i-1]+a[i];
	}
	for (int i=1; i+k<=n; i++) ans=max(ans, s[i+k]-s[i-1]);
	
	printf("%lld", ans);
	return 0;
}
/*
10 5
890 965 256 419 296 987 45 676 976 742 


3813
*/

  

标签:前缀,非负,int,最大值,long,最多能,饮水器
From: https://www.cnblogs.com/didiao233/p/18301992

相关文章

  • 最大值(最短路+最短路计数)
    洛谷CF449B 第1题   最大值 查看测评数据信息给定一个包含n个点和m条边的无向图,以及k条特殊的直接连接节点1的边。每条边都有一个权重,表示两点之间的距离。现在,我们想知道最多可以移除这k条特殊边中的多少条,而保持图中每个节点到节点1的最短距离不变。 输入格......
  • 24暑假算法刷题 | Day11 | LeetCode 150. 逆波兰表达式求值,239. 滑动窗口最大值,347.
    目录150.逆波兰表达式求值题目描述题解239.滑动窗口最大值题目描述题解347.前K个高频元素题目描述题解150.逆波兰表达式求值点此跳转题目链接题目描述给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个......
  • Day 10 逆波兰表达式求值,滑动窗口的最大值,前k个高频词
    逆波兰表达式求值逆波兰表达式:是一种后缀表达式,所谓后缀就是指运算符写在后面。#include<iostream>usingnamespacestd;#include<stack>strings;intmain(){ strings; cin>>s; stack<int>u; for(inti=0;i<s.size();i++) { if(s[i]=='+'|......
  • 前缀和与差分
    前缀和与差分的联系前缀和与差分就是一个互逆的过程,前缀和数组反映了从头到i的差分数组的和,差分数组体现了前缀和数组相邻的变化量。矩阵前缀差分的理解可以根据矩形面积来理解前缀和#include<iostream>usingnamespacestd;constintN=1e5+10;intn,m;int......
  • 【C语言】学习笔记:找出一个二维数组中的最大值,并打印出该最大值及其在数组中的位置
    找出一个二维数组中的最大值,并打印出该最大值及其在数组中的位置。首先,定义了必要的变量,包括用于遍历数组的索引变量i和j,以及用于存储最大值及其位置的变量hang、lie和max。定义了一个名为arry的二维数组,并初始化了其元素。使用两个嵌套的for循环来遍历数组,并......
  • 前缀和简析
    前缀和前置知识:\(\sum_{i=1}^{r}{a_i}=a_l+a_{l+1}+\dots+a_{r-1}+a_r\)考虑以下数组:\(i\)\(1\)\(2\)\(3\)\(a_I\)\(3\)\(5\)\(7\)如果我们要查询\(\sum_{i=1}^{2}{a_i}\),很显然可以得到\(\sum_{i=1}^{2}{a_i}=3+5=8\)。如果......
  • 【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【前缀和/固定滑窗】2
    有LeetCode算法/华为OD考试扣扣交流群可加948025485可上欧弟OJ系统练习华子OD、大厂真题绿色聊天软件戳od1441了解算法冲刺训练(备注【CSDN】否则不通过)文章目录题目描述与示例题目描述输入描述输出描述示例一输入输出说明示例二输入输出说明解题思路贪心思想......
  • 详解前缀码与前缀编码
    前缀编码是一种数据压缩技术,也被称为可变长度编码。它的基本原理是将频繁出现的字符或字符序列用较短的编码表示,而较少出现的字符或字符序列用较长的编码表示,从而达到压缩数据的目的。概念定义前缀码:给定一个编码序列的集合,若不存在一个序列是另一个序列的前缀,则该序列......
  • n阶前缀和 の 拆解
    2阶\[\sum_{i=l}^{r}\sum^{i}_{j=1}a_j\]\[=\sum_{i=l}^{r}(r-i+1)a_i\]\[=(r+1)\sum_{i=l}^{r}a_i+\sum_{i=l}^{r}i\cdota_i\]这个很好理解,因为对于第\(i\)个数,他加了\((r-i+1)\)次三阶正常拆解\[\sum_{i=l}^{r}\sum^{i}_{j=1}\sum_{k}^{j}a_k\]\[=......
  • 前缀和数组 差分数组
    前缀和一维:通过空间换时间适用于需要频繁查询某一段区间和的场景。一维数组:一维前缀和中的每一项:,该前缀和中的每一项也就是数组中对应的前i项和。一维前缀和数组的构造:在输入原数组时同步构造前缀和数组可以改写为  for(inti=1;i<=n;i++){scanf("%d",&arr[i......