无论是写在线段树外求出除数的逆元进行操作
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;
}
对于模数都过不去,需要自然溢出
但还有疑问
这篇题解
是如何用了模数还过得去的,不是很懂