Codeforces559E题解
题意:
- 一条路上有$n$盏不同的灯,每盏灯所在位置为$p_i$,向左或者向右可以照射的距离为$l_i$,求最大总照射长度。
- $n \leq 100,l_i,p_i \leq 10^8$。
题解:
- 这道题dp思路似乎都很神奇?
- 设$dp[i][j][k]$表示到第$i$盏灯(按位置从左到右),最左边的需要覆盖到的位置是$j$(0代表不存在未覆盖),最右端位置是$k$,包括了这段实际没有覆盖的最大总长度。
- 考虑转移:
- 向右照射,且之前的最左边需要覆盖的位置不变,转移方程:
- 向左照射,且覆盖掉了原来实际没有覆盖(或者原来没有未覆盖)的部分,转移方程:
- 向右照射,且原来没有未覆盖部分,最右边位置在当前灯位置左边,取最右边位置后某一处$j$到当前位置作为假装覆盖实际没有覆盖部分(或者不选取),转移方程:
- 向左照射,且原来没有未覆盖部分,最右边位置在当前灯照射左边界左边,取最右边位置后某一处$j$到当前位置作为假装覆盖实际没有覆盖部分(或者不选取),转移方程:
- 向右照射,且之前的最左边需要覆盖的位置不变,转移方程:
- 总时间复杂度$O(n^3)$。
代码:
1 |
|