社区讨论
萌新请教为什么队列数组每次要全清
P3800Power 收集参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo7txvkx
- 此快照首次捕获于
- 2023/10/27 07:42 2 年前
- 此快照最后确认于
- 2023/10/27 07:42 2 年前
第一个问题:
WA 60pts:
CPPfor(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:
CPPfor(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,但为什么没寄?
回复
共 4 条回复,欢迎继续交流。
正在加载回复...