我们相当于要求出(f_i = maxlimits_{j=1}^{n} (a_j + sqrt{|i-j|}))。这个绝对值太烦人了,考虑对于(i>j)和(i<j)分开做。
当(i>j)时,(f_i = maxlimits_{j=1}^{i-1}(a_j + sqrt{i-j}))。注意到这是一个典型的(f_i = maxlimits_{j=1}^{i-1}f_j + w(i,j))的形式,考虑决策单调性。不难证明(sqrt{x + 1} - sqrt{x} < sqrt{x} - sqrt{x - 1}),故对于决策点(p<q , sqrt{i+1-p} - sqrt{i-p} < sqrt{i+1-q} - sqrt{i-q}),也就是说(w(i+1,p) - w(i,p) < w(i+1,q) - w(i,q)),满足四边形不等式。
那么可以按照传统的方法,在队列中维护决策三元组((x,l,r))表示当(i in [l,r])时,(f_i = f_x + sqrt{i-x}),每加入一个新的决策时在队尾弹出被当前决策代替的决策,然后在最后一个有效决策的范围上二分得到当前决策的范围。当有询问时直接拿出队头的答案即可。