解题思路
我们需要在一个环形灯阵中,选定任意一盏灯作为起点,顺时针得到一个长度为 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 的关系: