輸入乙個長度為n的整數序列,從中找出一段不超過m的連續子串行,使得整個序列的和最大。
例如 1,-3,5,1,-2,3
當m=4時,s=5+1-2+3=7
當m=2或m=3時,s=5+1=6
第一行兩個數n,m
第二行有n個數,要求在n個數找到最大子序和
乙個數,數出他們的最大子序和
6 41 -3 5 1 -2 3
7
資料範圍:
100%滿足n,m<=300000
是不超過m,不是選m個!!!!!
/*單調佇列優化dp
單調佇列維護的是字首和的遞增序列
更新答案的時候從對首開始找第乙個區間在m範圍內的
f[i]表示到第i個數的不超過m的最大連續子段和,sum[i]表示i的字首和
f[i]=max(sum[i]-sum[k])(i=> k >=i-m),所以要找最小的sum[k],因此用單調佇列。
*/#include
#include
using
namespace
std;
intn,m,tot,head,tail,x,k;
struct
nodeq[100001
];
intmain()
printf(
"%d\n
",k);
return0;
}
tyvj1305 最大子序和(單調佇列
時間限制 記憶體限制 評測方式 題目 1000ms 131072kib 標準比較器 local 輸入乙個長度為n的整數序列,從中找出一段不超過m的連續子串行,使得整個序列的和最大。例如 1,3,5,1,2,3 當m 4時,s 5 1 2 3 7 當m 2或m 3時,s 5 1 6 第一行兩個數n,m...
tyvj 1305 最大子序和 dp 單調佇列
時間限制 記憶體限制 評測方式 題目 1000ms 131072kib 標準比較器 local 輸入乙個長度為n的整數序列,從中找出一段不超過m的連續子串行,使得整個序列的和最大。例如 1,3,5,1,2,3 當m 4時,s 5 1 2 3 7 當m 2或m 3時,s 5 1 6 第一行兩個數n,m...
TYVJ 1305 最大子序和 烽火傳遞
描述 輸入乙個長度為n的整數序列,從中找出一段不超過m的連續子串行,使得整個序列的和最大。例如 1,3,5,1,2,3 當m 4時,s 5 1 2 3 7 當m 2或m 3時,s 5 1 6 第一行兩個數n,m 第二行有n個數,要求在n個數找到最大子序和 乙個數,數出他們的最大子序和 6 4 1 3...