浙江台州网络设计网站,海口模板建站定制,在线crm免费,标签云wordpress正题
题目链接#xff1a;http://www.joyoi.cn/problem/tyvj-1305 题目大意
求一段长度不超过m的最大子序和。 解题思路
用前缀和#xff0c;我们可以枚举最右边的点#xff0c;然后取左边合法范围内最小的前缀和#xff0c;这个我们可以用单调队列进行优化。 code
#in…正题
题目链接http://www.joyoi.cn/problem/tyvj-1305 题目大意
求一段长度不超过m的最大子序和。 解题思路
用前缀和我们可以枚举最右边的点然后取左边合法范围内最小的前缀和这个我们可以用单调队列进行优化。 code
#includecstdio
#includealgorithm
using namespace std;
int n,m,x,sum[300001],head,tail,q[300001],ans;
int main()
{scanf(%d%d,n,m);head1;tail0;for (int i1;in;i){while (headtailq[head]mi) head;//维护合法区域scanf(%d,x);sum[i]sum[i-1]x;ansmax(ans,sum[i]-sum[q[head]]);//取最大值while (headtailsum[q[tail]]sum[i]) tail--;//维护单调性q[tail]i;//加入队列}printf(%d,ans);
}