typedef long long LL;
LL a[maxn];//a0 —— an-1
LL n;
LL N,M,K,T,t,q;
LL d[maxn][18];
LL gcd(LL a,LL b)
{
if (b==0) return a;
else return gcd(b,a%b);
}
void predig()
{
memset(d,0,sizeof(d));
for (LL i = 0; i<n; i++)
{
d[i][0] = a[i];
}
for (LL j = 1; (1 << j) <= n; j++)
{
for (LL i = 0; (i + (1 << j) - 1)<n; i++)
{
d[i][j] = gcd(d[i][j - 1], d[i + (1 << (j - 1))][j - 1]);
}
}
return;
}
LL rmq(LL l, LL r)//(No.l - No.r)
{
l--;
r--;
LL k = 0;
while (1 << (k + 1) <= (r - l + 1)) k++;
return gcd(d[l][k], d[r - (1 << k) + 1][k]);
}
RMQ-ST模板
最新推荐文章于 2021-02-21 17:28:14 发布