A.游戏
考虑到如果 x 是最大值,那么就是两个人轮流取的局面;否则就是一个人拿走了一段后缀,另一个人拿走了 x 周围的一段。我们可以二分这段后缀长度或者另一个人拿的最大值,check 一下就行了。
B. 插队
看到这个先想到 \(O(n^2)\) 的枚举插队点,但是发现这个并不好拓展,因为也没有单调性。
我们考虑可以类似去看一个点往某一个长度的段上面拼构成的共线,比如形象的说,我设计 \(f(i, j)\) 是一个点 i 前面已经有 j 长度的段了的权值总和,那么转移是很好想的,\(f(i, j) = f(i - 1, j - 1) + \lfloor \frac{a_i}{j} \rfloor\)。
这是一个很典的整除分块,可以用差分来维护。至于那个 j - 1 我们可以看做右移整个数组。我们把数组倒过来,用一个 vector 做就好了。