求助
查看原帖
求助
113190
Qiuly楼主2020/6/18 20:46

再次丢人

这样跳的话会被扫帚卡掉 /kk ,只有 70 pts70\ pts

不明白这样为什么是假的啊 /dk,这样不是 O(nlogn)O(n\log n)

if(len>1) {
    int las=0;
    while(true) {
        if(seq[now+1].ch==seq[len].ch) {
            int tmp=min(seq[now+1].tot,seq[len].tot);
            if(tmp>las) pls(res,calc(sum[now]+las+1,sum[now]+tmp)),las=tmp;
        }
        if(!now||seq[now+1]==seq[len]) break;
        if((sum[nxt[now]]<<1)>=sum[now]) now=nxt[now%(sum[now]-sum[nxt[now]])];
        else now=nxt[now];
    }
    if(seq[now+1]==seq[len]) nxt[len]=++now;
    else if(!now&&seq[now+1].ch==seq[len].ch&&seq[now+1].tot<seq[len].tot)
        pls(res,1ll*seq[now+1].tot*(seq[len].tot-las)%mod),nxt[len]=now=1;
} else pls(res,calc(1,seq[1].tot-1));
2020/6/18 20:46
加载中...