会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
DFS暴力解法
这道题的正解是 区间DP,但是我们用朴素解法 DFS 也能在考试时拿到一定的分数。把连续段 [l,r] 的最小联调代价直接递归:长度为 1 已经接通,返回 0;若该段单峰,可以整段直通,代价 (pl+pr)×(r−l+1);再枚举切点 t,把 [l,t] 和 [t+1,r] 继续递归,并加上并网代价 pt×pt+1,所有方案取最小。相邻相等允许,峰也不要求唯一;长度为 2 的段一定单峰。小数据这样搜就能得到正确答案,但同一个子段会被反复展开,规模到 n=200 会超时,所以后面再用区间 DP 把同一套转移记到表里。
DFS解法
#code-switcher
INF = 10 ** 18
题目内容
某公路养护段沿路依次安装了 n 个配电箱,从左到右编号 1∼n,第 i 个箱的额定功率为 pi。电工必须把这 n 个箱全部联调接通。
对任意一段连续配电箱 [L,R](下标从 1 开始),需要按照下面的规则完成该段联调,并在所有合法方案中选择总代价最小的方案。
- 整段直通。仅当该段功率序列是单峰时可用。这里的单峰定义为:存在一个峰顶位置 k(L≤k≤R),使得从 L 到 k 单调不降,从 k 到 R 单调不升,即 pL≤pL+1≤⋯≤pk 且 pk≥pk+1≥⋯≥pR。允许相邻功率相等;峰顶可以取在区间端点,因此整段一直递增(取 k=R)或一直递减(取 k=L)也都算单峰。整段直通的代价为 (pL+pR)×(R−L+1)。长度为 1 的段视为已经接通,其最小代价规定为 0,不计算整段直通代价。长度为 2 的段一定是单峰。
- 中剖并网。任选一个切点 t(L≤t<R),将该段分成 [L,t] 和 [t+1,R] 两段。先分别按照同样的规则完成这两个子段的联调,并使每个子段的联调代价最小,再将两段并网。并网本身的代价为 pt×pt+1,因此该方案的总代价为两个子段的最小联调代价之和,再加上 pt×pt+1。若采用中剖并网,可以在所有合法切点 t 中任选,并取总代价最小的方案。