A41143.信奥试炼塔(tower)
普及+/提高
通过率:65.12%
时间限制:1.00s
内存限制:128MB
题目描述
在ACGO编程平台中,有一座神秘的“信奥试炼塔”,塔内设有一条线性分布的算法节点,依次编号为 1 到 n。每个节点都隐藏着能量水晶和能量消耗机制。
现在,一名勇敢的挑战者(你可以从塔中的任意一个节点出发)准备在试炼塔中探索。当你从一个节点转移到下一个节点时,只能前往与其相邻的节点。并且,第一次经过该节点时,你会从节点的能量水晶中获得 vi 单位的能量奖励;然而,每次经过这个节点,都会同时消耗 li 单位的能量(无论是否是首次经过)。对于出发的节点而言,一开始即视为经过该节点。
你的任务是:分别以塔中的 1 至 n 号节点作为起点,计算在该节点出发、并允许在相邻节点之间左右移动的情况下,能够获得的最大剩余能量。
输入格式
输入包含三行。
- 第 1 行:一个整数 n,表示节点总数。
- 第 2 行:包含 n 个整数,表示数组 v,其中 vi 为第 i 个节点的能量奖励。
- 第 3 行:包含 n 个整数,表示数组 l,其中 li 为第 i 个节点的能量消耗。
输出格式
输出共 n 个整数,第 i 个整数表示当出发节点为 i 时,在试炼塔允许左右移动的前提下,能够获得的最大剩余能量。
输入输出样例
输入#1
5 6 1 1 3 4 1 1 2 1 1
输出#1
9 8 6 8 9
说明/提示
数据范围
- 对于 10% 的数据,n≤2
- 对于 30% 的数据,n<200
- 对于 70% 的数据,n<2000
- 对于 100% 的数据,0<n≤100000,0≤vi,li≤109
说明:
- “左右移动”即只能在相邻节点之间来回走动(例如从节点 i 移动到 i−1 或 i+1,条件是对应节点在有效范围 [1,n] 内)。
- 出发节点也会在一开始被视为“经过”一次,所以立刻获得 vi,并同时消耗 li。
- 需要分别给出从每个节点(1 到 n)出发时的最大剩余能量。