单调队列复习。

投资 (invest)

给定一带符号整数数列,求长度为 \([s, e]\) 的子区间的和的最大值。(最大子段和)

降二维为一维,for循环枚举区间右端点。预处理前缀和,问题转化为找到最小的左端点。

使用单调队列维护查找范围内最小值。参看 单调队列总结

单调队列算法实现:

  1. 弹出单调队列左端的失效元素。
  2. 弹出单调队列右端的破坏单调性的元素。如在最小值单调队列中,剔除比 即将加入的元素 更大的元素,因为后者已对答案无未来贡献。(比前者先失效,未来不会是更小值。)
  3. 加入新元素。计算并统计当前单调队列维护的最优值。
int q[N], l, r;
int m=1; int main() {
n=read(), s=read(), e=read(); // s 区间最小长度, e 区间最大长度
for (int i=1; i<=n; i++)
a[i] += a[i-1] + read();
for (int i=s; i<=n; i++) {
while (l < r && i-q[l] > e)
l++;
while (l < r && a[i-s] < a[q[r-1]])
r--;
q[r++] = i-s;
m=max(m, a[i] - a[q[l]]);
}
write(m);
return 0;
}

最新文章

  1. Android6.0之来电转接号码显示修改
  2. AJAX跨域访问(从Tomcat8到Apache/Nginx)
  3. HDU 5690:2016&quot;百度之星&quot; - 初赛 All X
  4. ionic build android--&gt; Build failed with an exception. Execution failed for task &#39;:processDebugResources&#39;.
  5. 《Code Complete》ch.24 重构
  6. UVALive 3661 Animal Run(最短路解最小割)
  7. Catalyst揭秘 Day3 sqlParser解析
  8. mac osx 升级yosemite后java出错的解决
  9. mongodb基本概念解析
  10. Android ListView特别属性用法
  11. apache2 httpd 基于域名的虚拟主机配置 for centos6X 和debian-8
  12. 最终结算“Git Windowsclient保存username与password”问题
  13. .Net Core 管道中的ConfigureServices 和Configure
  14. 1_2_3_4_5 Html-Css
  15. Linux课题实践五——字符集总结与分析
  16. 转发(forward)和重定向(redirect)
  17. Python3 函数注解
  18. 初步了解hg19注释文件的内容 | gtf
  19. Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)
  20. django HttpResponse的用法

热门文章

  1. Android Framework中Thread类
  2. spring mvc 接受数组
  3. nvm-windows编译源码 go遇到的问题
  4. 如何快速查找到多个字典中的公共键(Key)---Python数据结构与算法相关问题与解决技巧
  5. JavaSE编码试题强化练习7
  6. 洛咕 【P1891】疯狂LCM &amp; 三倍经验
  7. python字符串内置函数汇总
  8. bzoj3188 [Coci 2011]Upit(分块)
  9. 媒介查询demo
  10. asp.net 获取表单中控件的值