#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstdio>
using namespace std;
const int N=;
int n,a[N],m;
struct tree{
int l,r,gcd;
}tr[N*];
int gcd(int x,int y){
if(y==)return x;
else return gcd(y,x%y);
}
void build(int l,int r,int now){
tr[now].l=l;tr[now].r=r;
if(l==r){
tr[now].gcd=a[l];
return;
}
int mid=(l+r)>>;
build(l,mid,now*);
build(mid+,r,now*+);
tr[now].gcd=gcd(tr[now*].gcd,tr[now*+].gcd);
}
void change(int x,int y,int now){
// cout<<tr[now].l<<" "<<tr[now].r<<" "<<x<<endl;
if(tr[now].l==x&&tr[now].r==x){
tr[now].gcd=y;
return ;
}
int mid=(tr[now].l+tr[now].r)>>;
if(x>mid)change(x,y,now*+);
else change(x,y,now*);
tr[now].gcd=gcd(tr[now*].gcd,tr[now*+].gcd);
}
int check(int l,int r,int x,int now){
if(tr[now].gcd%x==)return ;
if(tr[now].l==l&&tr[now].r==r){
if(l==r)return ;
if(tr[now*].gcd%x==)return check(tr[now*+].l,tr[now*+].r,x,now*+);
if(tr[now*+].gcd%x==)return check(tr[now*].l,tr[now*].r,x,now*);
return ;
}
int mid=(tr[now].l+tr[now].r)>>;
if(l>mid)return check(l,r,x,now*+);
else if(r<=mid)return check(l,r,x,now*);
else{
return check(l,mid,x,now*)+check(mid+,r,x,now*+);
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}
build(,n,);
scanf("%d",&m);
for(int i=;i<=m;i++){
int k;
scanf("%d",&k);
if(k==){
int l,r,x;
scanf("%d%d%d",&l,&r,&x);
if(check(l,r,x,)<=)printf("YES\n");
else printf("NO\n");
}
else{
int x,y;
scanf("%d%d",&x,&y);
change(x,y,);
}
}
return ;
}

题意

•给出一段序列(1≤n≤5*105),两个操作(1≤q≤4*105)

•操作1 给出l,r,x

•求区间l-r的gcd,如果至多能改掉区间内的一个数,使gcd是x的倍数,那么输出YES,否则输出NO

•操作2 给出pos,x

•将序列中pos位置上的数字改为x

题解

线段树,维护区间的gcd

因为题目询问删除一个数,我们把整个区间分成两块,如果两边的gcd都是x的倍数显然是可以的,如果都不是gcd的倍数,就不行了,因为使两个gcd的gcd为x的倍数,这两个gcd应该都至少含有x因子。如果一个gcd是x的倍数,一个不是,那就递归处理不是的那个区间。

最新文章

  1. c#解析xml
  2. android 中theme和style的语法相关
  3. VS2012中,C# 配置文件读取 + C#多个工程共享共有变量 + 整理using语句
  4. eclipse中新建python项目报错:Project interpreter not specified
  5. android 三种弹出框之一PopupWindow
  6. 第一次使用easyUI
  7. ZOJ 3209 Treasure Map (Dancing Links)
  8. 导出Unity场景为配置文件
  9. boost------signals2的使用2(Boost程序库完全开发指南)读书笔记
  10. MES项目参观交流会
  11. Measuring &amp; Optimizing I/O Performance
  12. LeetCode 120. Triangle (三角形)
  13. react-router v4中 HashRouter 和 BrowserRouter的使用
  14. 转载记录一个有效的jetbrains激活码
  15. python----多继承C3算法
  16. springboot项目打包部署在指定的tomcat容器中
  17. AtCoder Grand Contest 025 B - RGB Coloring
  18. 1-find
  19. Codeforces 1093 简要题解
  20. 第十四个目标 (fzu)

热门文章

  1. 第二章 Python数据类型详解
  2. day20 匿名函数,内置函数,面向过程编程
  3. 2017CCPC秦皇岛
  4. Element源码阅读(2)
  5. ios兼容 input输入时弹出键盘框 页面整体上移键盘框消失后在ios上页面不能回弹的问题
  6. CRM系统 - 总结 (二) stark组件
  7. 洛谷 P1313 计算系数 (二项式定理)
  8. VUE:UI组件库(Mint UI &amp; Elment)
  9. ArcGIS 安装
  10. 极路由4pro(HC5962)设置阿里云DDNS