WA 60pts:
for(int i=1;i<=n;++i)
{
q[1]=0; //<=here(只清首项)
l=0,r=1;
d^=1;
for(int j=1;j<=T;++j)
{
while(r>=l&&f[d^1][q[r]]<=f[d^1][j]) --r;
q[++r]=j;
}
for(int j=T+1;j<=m;++j)
{
while(r>=l&&f[d^1][q[r]]<=f[d^1][j]) --r;
q[++r]=j;
if(q[l]+2*T<j) ++l;
f[d][j-T]=f[d^1][q[l]]+val[i][j-T];
}
for(int j=m+1;j<=m+T;++j)
{
if(q[l]+2*T<j) ++l;
f[d][j-T]=f[d^1][q[l]]+val[i][j-T];
}
}
AC:
for(int i=1;i<=n;++i)
{
memset(q,0,sizeof(q));//<=here(全部清空)
l=0,r=1;
d^=1;
for(int j=1;j<=T;++j)
{
while(r>=l&&f[d^1][q[r]]<=f[d^1][j]) --r;
q[++r]=j;
}
for(int j=T+1;j<=m;++j)
{
while(r>=l&&f[d^1][q[r]]<=f[d^1][j]) --r;
q[++r]=j;
if(q[l]+2*T<j) ++l;
f[d][j-T]=f[d^1][q[l]]+val[i][j-T];
}
for(int j=m+1;j<=m+T;++j)
{
if(q[l]+2*T<j) ++l;
f[d][j-T]=f[d^1][q[l]]+val[i][j-T];
}
}
why? qwq
经推算这份代码在T>m时可能ub,但为什么没寄?