单调队列
单调队列优化dp
形如dp[i]=max/min (f[k]) + g[i]
//单调队列区间长度为k
long long que(int i){//让返回值尽量的大,队列单调减,使首元素恒最大
d[i]=dp[i-1]-sum[i];
while(head<=tail&&d[q[tail]]<d[i])tail--;
q[++tail]=i;
while(head<=tail&&q[head]<i-k)head++;
return d[q[head]];
}滚动数组
dp[2][j][k]
int x=i&1;
dp[x][j][k] = dp[x ^ 1][j][k];4
Last updated