分析
首先我们在最后加上一个无限远的虚拟村庄,以避免最后一个村庄没有被考虑,接着
设 f [ i ] [ j ] f[i][j] f[i][j]表示前 i i i个村庄安放 j j j个基站,其中第 i i i个村庄安放一个基站的最少费用
显然状态转移方程为 f [ i ] [ j ] = m i n { f [ k ] [ j − 1 ] + c o s t [ k ] [ j ] } + c [ i ] f[i][j]=min\{f[k][j-1]+cost[k][j]\}+c[i] f[i][j]=min{
f[k][j−1]+cost[k][j]}+c[i]
时间复杂度 O ( n 2 k ) O(n^2k) O(n2k),显然是不能接受
我们计算出 s t [ i ] , e d [ i ] st[i],ed[i] st[i],ed[i]表示最左、右能覆盖第 i i i个区间的范围,用二分实现,那么建一个邻接表, e d