警示后人(如果你 WA on #7)
查看原帖
警示后人(如果你 WA on #7)
516946
_abcd_楼主2025/2/7 20:37

如果你的双指针部分写法形如

while(k<=r&&!pre[k].inc(suf[i]))
{
    add(ro,0,pre[k].n,1);
    k++;
}
while(j<=r&&suf[i].inc(pre[j]))
{
    add(ro,0,pre[j].n,-1);
    j++;
}

那么如果出现 sufi=preksuf_i = pre_k 的情况,jj 就会移动到 kk 后面。因此改成

while(k<=r&&!pre[k].inc(suf[i]))
{
    add(ro,0,pre[k].n,1);
    k++;
}
while(j<k&&suf[i].inc(pre[j]))
{
    add(ro,0,pre[j].n,-1);
    j++;
}

就行了。

2025/2/7 20:37
加载中...