就我而言
查看原帖
就我而言
988040
qtanglani楼主2024/6/2 11:32

无论是写在线段树外求出除数的逆元进行操作

for(int i=n+1;i<=m;i++)
    {
        int x=pos[i-n];
        modify(1,0,x-1,in,0,m+1);//除以前面的数
        modify(1,x,0,0,m+1);//去掉此数
        x=pos[i];
        modify(1,0,x-1,base,0,m+1);//前面统一乘
        int cnt=find(1,x+1,m+1,0,m+1).cnt;//后面的个数
        modify(1,x,h[cnt]*i%P,0,m+1);//加上这一位
        if(mp[find(1,0,m+1,0,m+1).sum%P])
            ans++;
    }

还是在pushup的时候进行操作

info merge(info a,info b)
{
    info c;
    c.sum=a.sum*h[b.cnt]+b.sum;
    c.cnt=a.cnt+b.cnt;
    return c;
}

对于模数都过不去,需要自然溢出

但还有疑问 这篇题解 是如何用了模数还过得去的,不是很懂

2024/6/2 11:32
加载中...