A5732 | Alice 的奇妙子段
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
给定一个长度为 $n$ 的整数序列 $a_1,a_2,\dots,a_n$。你可以选择至多一次把某个连续子段 $[l,r]$(要求 $1\le l\le r\le n$、长度 $(r-l+1)\le L$)中的每个数取相反数(乘以 $-1$)。翻转完成后,在新序列上取一个非空连续子段,使其元素和尽可能大。
请你输出在最优选择下的最大子段和。
请你输出在最优选择下的最大子段和。
输入格式
* 第一行两个整数 $n,L$ —— 序列长度与允许翻转的最大长度。
* 第二行 $n$ 个整数 $a_1,a_2,\dots,a_n$。
* 第二行 $n$ 个整数 $a_1,a_2,\dots,a_n$。
输出格式
* 输出一个整数,表示在至多一次、长度不超过 $L$ 的翻转后,序列的最大子段和。
输入输出样例
输入 #1
5 2 1 -4 3 -2 5
输出 #1
11
说明
选择翻转子段 $[2,2]$(长度 $1\le L$):序列变为 $[1,4,3,-2,5]$,其最大子段和为 $1+4+3-2+5=11$。
数据范围
* $1\le n\le 2\times 10^5$
* $0\le L\le n$
* $|a_i|\le 10^9$
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?