【题目链接】
【思路要点】
- 考虑最右侧的最大值所在的位置 i i i ,则 i i i 号位置的机器人一定会移动到边界,并且挡住其他经过的机器人,因此枚举 i i i 的位置可以将问题分解为左右两个子问题分别处理。
- 注意到 i i i 可能的位置一定是靠近中点的,可能被访问到的区间数 M M M 不会是 O ( N 2 ) O(N^2) O(N2) 级别的,当 N ≤ 300 N\leq300 N≤300 时, M M M 大约在 2000 2000 2000 左右。
- 直接实现上述 d p dp dp ,可以得到一个时间复杂度 O ( M V ) O(MV) O(MV) 的做法。
- 考虑测试点 11 , 12 11,12 11,12 ,此时的转移方式十分单一,并且可由归纳法证得长度为 x x x 的区间对应的 d p dp dp 值是一个不超过 x x x 次的多项式的点值。
- 因此若将权值分段,每一段的转移与测试点 11 , 12 11,12 11,12 均无本质区别,因此每一段权值中,长度为 x x x 的区间对应的 d p dp dp 值同样是一个不超过 x x x 次的多项式的点值。
- 配合拉格朗日插值,可以得到一个对于每一段权值,需要 O ( N M ) O(NM) O(NM) 的时间复杂度计算的算法,总时间复杂度为 O ( N 2 M ) O(N^2M) O(N2M) 。
- 由于维护多项式的做法复杂度为 O ( N 3 ) O(N^3) O(N3) ,略低于该做法,该做法只能得到 95 95 95 分。
但这做法不知道好写到哪里去了。- 以下是笔者当场的 95 95