1.最大连续和问题
给你一个长度为N的整数序列 {A1,A2,…,An},要求从中找出一段连续的长度不超过M且不为0的子序列,使得这个序列的和最大。
样例输入
6 4
1 -3 5 1 -2 3
样例输出
7
数据范围与提示
1<=N,M<=2e5
当看到这道题的第一眼,直接暴力枚举好吧
然而这道题其实一看就是一个前缀和, 但不是一个简单的前缀和。
WA代码(45分)
#include <bits/stdc++.h>
using namespace std;
const int M = 2e5 + 5;
int a, n, m, ans = INT_MIN, len;
int b[M];
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
cin >> a;
if (b[i - 1] > 0)
b[i] = b[i - 1] + a, len++;
else
b[i] = a, len = 1;
if (b[i] > ans &&