关于树状数组维护前缀gcd
  • 板块学术版
  • 楼主唐一文
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/11/19 03:02
  • 上次更新2023/11/4 00:11:27
查看原帖
关于树状数组维护前缀gcd
150843
唐一文楼主2021/11/19 03:02

我在 这道题 维护前缀 gcd 时用了下面的代码

void Add(int x,int w){
  for(;x<=n;x+=lowbit(x))Gcd[x]=gcd(Gcd[x],w);
}
int Qry(int x){
  int ans=0;
  for(;x;x^=lowbit(x))ans=gcd(ans,Gcd[x]);
  return ans;
}
void Mdf(int x,int w){
  Add(x,w);
  a[x]=w;
}
int main(){
  for(re int i=1;i<=n;++i)Add(i,a[i]);
}

之前 AC 后就没管了

不过刚刚重新看了下这份代码,感觉会有问题,但是跟题解也没有拍出 hack

请问这份树状数组维护前缀 gcd 写法是正确的吗(或者有修改操作时树状数组能维护前缀 gcd 吗)

2021/11/19 03:02
加载中...