我们需要在一个环形灯阵中,选定任意一盏灯作为起点,顺时针得到一个长度为 n 的线性序列 b1,…,bn,并计算交错和
S=b1−b2+b3−b4+⋯+(−1)n−1bn求所有可能起点的 S 的最大值。
直接对每一个起点单独计算交错和的复杂度为 O(n2),在 n≤2×105 时无法满足要求。可以利用递推关系在 O(1) 时间内从一个起点的交错和转移到顺时针下一个起点的交错和。
设 Sk 表示从第 k 个位置作为起点时的交错和(这里位置下标按输入顺序从 1 到 n 记,即 S1 对应起点 a1)。我们可以先计算出 S1 的值,然后推导 Sk+1 与 Sk 的关系:
小蓝有一个环形灯阵,灯阵上依次排列着 n 盏灯。每盏灯都有一个非负整数亮度值,按顺时针顺序记为 a1,a2,…,an。她想通过以下方式计算灯阵的“交错能量”:
n 的线性序列 b1,b2,…,bn。小蓝希望知道,在所有可能的起点中,交错和 S 的最大值是多少。请你输出这个最大值。
约束条件:灯的数量 n 满足 1≤n≤2×105;每盏灯的亮度 ai 满足 0≤ai<n。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册