A4791 | 信奥试炼塔(tower)
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
在ACGO编程平台中,有一座神秘的“信奥试炼塔”,塔内设有一条线性分布的算法节点,依次编号为 $1$ 到 $n$。每个节点都隐藏着能量水晶和能量消耗机制。
现在,一名勇敢的挑战者(你可以从塔中的任意一个节点出发)准备在试炼塔中探索。当你从一个节点转移到下一个节点时,只能前往与其相邻的节点。并且,第一次经过该节点时,你会从节点的能量水晶中获得 $v_i$ 单位的能量奖励;然而,每次经过这个节点,都会同时消耗 $l_i$ 单位的能量(无论是否是首次经过)。对于出发的节点而言,一开始即视为经过该节点。
你的任务是:分别以塔中的 $1$ 至 $n$ 号节点作为起点,计算在该节点出发、并允许在相邻节点之间左右移动的情况下,能够获得的最大剩余能量。
现在,一名勇敢的挑战者(你可以从塔中的任意一个节点出发)准备在试炼塔中探索。当你从一个节点转移到下一个节点时,只能前往与其相邻的节点。并且,第一次经过该节点时,你会从节点的能量水晶中获得 $v_i$ 单位的能量奖励;然而,每次经过这个节点,都会同时消耗 $l_i$ 单位的能量(无论是否是首次经过)。对于出发的节点而言,一开始即视为经过该节点。
你的任务是:分别以塔中的 $1$ 至 $n$ 号节点作为起点,计算在该节点出发、并允许在相邻节点之间左右移动的情况下,能够获得的最大剩余能量。
输入格式
输入包含三行。
- 第 1 行:一个整数 $n$,表示节点总数。
- 第 2 行:包含 $n$ 个整数,表示数组 $v$,其中 $v_i$ 为第 $i$ 个节点的能量奖励。
- 第 3 行:包含 $n$ 个整数,表示数组 $l$,其中 $l_i$ 为第 $i$ 个节点的能量消耗。
- 第 1 行:一个整数 $n$,表示节点总数。
- 第 2 行:包含 $n$ 个整数,表示数组 $v$,其中 $v_i$ 为第 $i$ 个节点的能量奖励。
- 第 3 行:包含 $n$ 个整数,表示数组 $l$,其中 $l_i$ 为第 $i$ 个节点的能量消耗。
输出格式
输出共 $n$ 个整数,第 $i$ 个整数表示当出发节点为 $i$ 时,在试炼塔允许左右移动的前提下,能够获得的最大剩余能量。
输入输出样例
输入 #1
5 6 1 1 3 4 1 1 2 1 1
输出 #1
9 8 6 8 9
数据范围
- 对于 $10\%$ 的数据,$n \le 2$
- 对于 $30\%$ 的数据,$n \lt 200$
- 对于 $70\%$ 的数据,$n \lt 2000$
- 对于 $100\%$ 的数据,$0 < n \le 100000$,$0 \le v_i, l_i \le 10^9$
----
说明:
- “左右移动”即只能在相邻节点之间来回走动(例如从节点 $i$ 移动到 $i-1$ 或 $i+1$,条件是对应节点在有效范围 $[1, n]$ 内)。
- 出发节点也会在一开始被视为“经过”一次,所以立刻获得 $v_i$,并同时消耗 $l_i$。
- 需要分别给出从每个节点(1 到 $n$)出发时的最大剩余能量。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?