题目
https://gmoj.net/senior/#main/show/6858
https://www.luogu.com.cn/problem/P7078
题解
这题很是巧妙,思路不难,难点在于如何维护。
先考虑 O ( n 2 ) O(n^2) O(n2)怎么做。
假设这堆蛇是 a 1 , a 2 , a 3 , ⋯ , a n a_1,a_2,a_3,\cdots,a_n a1,a2,a3,⋯,an,现在考虑第 n n n条蛇会不会吃掉第 1 条蛇。注意,这里的 a 不仅仅是一个体力值,还包含了蛇的初始编号。
- 当 a n − a 1 ≥ a 2 a_n-a_1\ge a_2 an−a1≥a2时,第 n n n条蛇一定会吃掉第 1 条蛇。证明就是令 a n ′ = a n − a 1 a'_n=a_n-a_1 an′=an−a1,如果 a n ′ a'_n an′被吃了,说明比它小的