小技巧总结
1.单调队列优化多重背包
考虑正常的多重背包做法
$f_{i,j}=max{f_{i-1,j-k*v}+k*w}$
考虑每次的转移过程
$f_{i,3v}$要取$f_{i-1,0}+3w$,$f_{i-1,v}+2w$,$f_{i-1,2v}+w$,$f_{i-1,3v}$的最大值
$f_{i,4}$要取$f_{i-1,0}+4w$,$f_{i-1,v}+3w$,$f_{i-1,2v}+2w$,$f_{i-1,3v}+w$,$f_{i-1,4v}$的最大值
观察可以发现相邻的俩项差都是$w$,所以都减去一个定值对大小不影响
那么我们可以直接用单调队列维护
$f_{i-1,0}$,$f_{i-1,1}-w$,$f_{i-1,2}-2w$……的值,直接取最大值即可
代价是$O(nV)$
2.切比雪夫距离转换
欧几里得距离定义为$\sqrt{(x_{i}-x_{j})*(x_{i}-x_{j})+(y_{i}-y_{j})*(y_{i}-y_{j})}$
切比雪夫距离定义为$max{|x_{i}-x{j}|,|y_{i}-y_{j}|}$
曼哈顿距离定义为$|x_{i}-x_{j}|+|y_{i}-y_{j}|$
由于切比雪夫距离中涉及到取$max$操作,所以可以通过转换为曼哈顿距离进行优化
将原坐标系的$(x,y)$换位$(\frac{x+y}{2},\frac{x-y}{2})$即可转换为曼哈顿距离,可以使用例如前缀和或数据结构优化
同理,将$(x,y)$换位$(x+y,x-y)$后,曼哈顿距离转换为切比雪夫距离
3.平面最近点对

浙公网安备 33010602011771号