小技巧总结

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.平面最近点对

 

posted @ 2018-09-15 20:05  2018szb  阅读(83)  评论(0)    收藏  举报