while(l<=r&&i-q[l]>=sz) l++;
if(l<=r) dc = max(dc, d[cyc[ms(i)]]+s[i]+d[cyc[ms(q[l])]]-s[q[l]]);
while(l<=r&&d[cyc[ms(q[r])]]-s[q[r]]<=d[cyc[ms(i)]]-s[i]) r--;
q[++r] = i;
q里面存的是决策。
决策j < 阶段i 时:
- 有,检查左失效
- 有,查找更新
- 有,弹差的右,入右
然而实际上可能包含i,因此
- 有,检查左失效
- 有,弹差的右,入右
- 有,查找更新