首页 > 其他分享 >135. 最大子序和

135. 最大子序和

时间:2024-06-18 12:10:25浏览次数:13  
标签:最大 int sum long 135 序列 子序

// 135. 最大子序和 dp.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <deque>


using  namespace std;

/*
https://www.acwing.com/problem/content/137/

输入一个长度为 n的整数序列,从中找出一段长度不超过 m
 的连续子序列,使得子序列中所有数的和最大。

注意: 子序列的长度至少是 1。

输入格式
第一行输入两个整数 n,m。

第二行输入 n个数,代表长度为 n 的整数序列。

同一行数之间用空格隔开。

输出格式
输出一个整数,代表该序列的最大子序和。

数据范围
1≤n,m≤300000
输入样例:
6 4
1 -3 5 1 -2 3
输出样例:
7
*/

const int N = 300000;
deque<int >q;
int n, m;
long long sum[N];


int main()
{
	cin >> n >> m;
	for (int i = 1; i <= n; i++) {
		int t; cin >> t;
		sum[i] = sum[i - 1] + t;
	}
	long long ans = -9999999999;
	for (int i = 0; i <= n; i++) {
		while (!q.empty() && i - q.front() > m) q.pop_front();
		if (!q.empty()) {
			ans = max(ans, sum[i] - sum[q.front()]);
		}
		while (!q.empty() && sum[q.back()] >= sum[i]) q.pop_back();
		q.push_back(i);
	}

	cout << ans << endl;

	return 0;
}

我的视频题解空间

标签:最大,int,sum,long,135,序列,子序
From: https://www.cnblogs.com/itdef/p/18254091

相关文章

  • NumPy 差分、最小公倍数、最大公约数、三角函数详解
    NumPy差分离散差分意味着相邻元素之间的减法。例如,对于[1,2,3,4],离散差分将是[2-1,3-2,4-3]=[1,1,1]要找到离散差分,使用diff()函数。示例:importnumpyasnparr=np.array([10,15,25,5])newarr=np.diff(arr)print(newarr)返回:[510-20],因为15-......
  • PTA 7-2 将一整个正整数的所有位重新排序,组成一个最大数
    7-2将一整个正整数的所有位重新排序,组成一个最大数分数20importjava.util.*;publicclassMain{ publicstaticvoidmain(String[]args){ Scannerscan=newScanner(System.in); Stringarr=scan.nextLine();//输入一个字符串 char[]arr1=arr.toChar......
  • Java常见面试题分享-用Java实现LIS(最长递增子序列)算法
    问题描述编写一个函数,该函数接受一个整数列表作为参数,计算这个列表的最长递增子序列(LIS)的长度,这个也是动态规划中常见的问题。举一个典型的场景:用来查找股票价格的最大增长,比如股票价格是[12,13,11,14,15,16,10,9,8,7],股票价格的最大增长是[12,13,14,15,......
  • 洛谷 P1122 最大子树和
    题目链接:最大子树和思路    由于可以无限剪枝,所以假设以节点1为根,并删去所有美丽质数小于0的子树,又考虑到可能会出现根节点为负数,导致可能会只留下子树而把节点1为根节点的其他部分扔掉,所以需要dp数组记录,dp[i]为以节点i为根节点能得到的最大的美丽指数,贪心将节点i的子......
  • 代码随想录算法训练营第六十天 | 647. 回文子串、516.最长回文子序列
    647.回文子串文字讲解:代码随想录视频讲解:动态规划,字符串性质决定了DP数组的定义|LeetCode:647.回文子串_哔哩哔哩_bilibili解题思路1.dp[i][j]     [i,j]子串是否是回文的      是则返回true,不是则返回false2.递推公式if(s[i]==s[j])   ......
  • 代码随想录算法训练营第五十九天 | 115.不同的子序列、583. 两个字符串的删除操作、72
    115.不同的子序列题目链接:代码随想录视频讲解:动态规划之子序列,为了编辑距离做铺垫|LeetCode:115.不同的子序列_哔哩哔哩_bilibili解题思路1.dp[i][j]  为在s的前i个元素(即s[0,i-1])(以i-1结尾)中,有多少个t[0,j-1]匹配(以t[j -1]为结尾)2.递推公式//如果......
  • 代码随想录算法训练营第五十八天 | 392.判断子序列
    392.判断子序列 题目链接:代码随想录视频讲解:动态规划,用相似思路解决复杂问题|LeetCode:392.判断子序列_哔哩哔哩_bilibili解题思路本题和求最长公共子序列是一样的,值就是s字符串的长度,如果一致就返回true,如果不一致就是false这题也可以看作编辑距离入门级别的题目......
  • 打卡信奥刷题(90)用Scratch图形化工具信奥P1853 [普及组] 投资的最大效益
    投资的最大效益题目背景约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益。银行工作人员向他提供了多种债券,每一种债券都能在固定的投资后,提供稳定的年利息。当然,每一种债券的投资额是不同的,一般来说,投资越大,收益也越大,而且,每一年还可以根......
  • 蓝桥杯备考冲刺必刷题(C++) | 3791 珠宝的最大交替和
    学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(C++)|汇总-CSDN博客【题目描述】小莉是一位珠宝设计师,她非常喜欢玩珠子。她有一个长度为N......
  • 蓝桥杯备考冲刺必刷题(C++) | 3250 最大的卡牌价值
    学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(C++)|汇总-CSDN博客【题目描述】给定nnn副卡牌,每张卡牌具......