tyvj p1305 最大自序和

2021-07-14 11:06:46 字數 971 閱讀 5312

輸入乙個長度為n的整數序列,從中找出一段不超過m的連續子串行,使得整個序列的和最大。

例如 1,-3,5,1,-2,3

當m=4時,s=5+1-2+3=7

當m=2或m=3時,s=5+1=6

戳戳戳

一開始用的樸素的 錯的 演算法 。過了 9個點。

然後決定考慮 優化。

讓我們來枚舉子序列中的 最後一位,用s[i]表示 到a[i]的 序列和

所以 ans=s[i]-min(s[j])【j≥i-m】

因為sum是不變的所以我們只用求 最小的s【j】 即可

所以我們來維護乙個單調序列滿足

1.單調遞增

2.棧中元素不能 超過m個

所以看**吧

#include#include#include//by mars_ch

using namespace std;

int n,m;

int a;

int ans;

int sum;

int f[300005];

int s[300005];

int main()

// printf("%d %d\n",t,sum);

f[t]=sum;

s[t++]=i;

/************保證個數不超過m**************/

while(i-s[h]>m) h++;

ans=max(ans,sum-f[h]);

}printf("%d\n",ans);

return

0;}

然後完美

lectcode 陣列 最大自序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。int maxsubarray vector nums return max int maxsub...

leetcode 53 最大自序和

給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解。思路 簡單題,維...

leetcode 53 最大自序和

題目 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解 原始碼 掃...