单调队列优化DP

优化形如\(f_i=min/max(f_i,f_j+val_i)(l_i\leqslant j\leqslant r_i)\)\(DP\)方程

瑰丽华尔兹\(DP\)方程为\(f_{i,j}=max(f_{i,j},f_{i-dx_,j-dy}+dis_{i,j,i-dx_,j-dy})\)

\(code:\)

while(h<=t&&f[x][y]>q[t].val+dis(x,y,q[t].x,q[t].y)) t--;
q[++t]=(que){f[x][y],x,y};
while(h<=t&&(abs(x-q[h].x)>len||abs(y-q[h].y)>len)) h++;
f[x][y]=max(f[x][y],q[h].val+dis(x,y,q[h].x,q[h].y));
ans=max(ans,f[x][y]);
posted @ 2020-01-22 20:54  lhm_liu  阅读(104)  评论(0编辑  收藏  举报