传送门

分析

用线段树维护区间gcd,每次查询找到第一个不是x倍数的点,如果这之后还有gcd不能被x整除的区间则这个区间不合法

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int d[],cnt,a[];
inline int gcd(int x,int y){return y==?x:gcd(y,x%y);}
inline void build(int le,int ri,int wh){
if(le==ri){
d[wh]=a[le];
return;
}
int mid=(le+ri)>>;
build(le,mid,wh<<);
build(mid+,ri,wh<<|);
d[wh]=gcd(d[wh<<],d[wh<<|]);
return;
}
inline void update(int le,int ri,int wh,int pl,int k){
if(le==ri){
d[wh]=k;
return;
}
int mid=(le+ri)>>;
if(mid>=pl)update(le,mid,wh<<,pl,k);
else update(mid+,ri,wh<<|,pl,k);
d[wh]=gcd(d[wh<<],d[wh<<|]);
return;
}
inline void q(int le,int ri,int wh,int x,int y,int k){
if(le>=x&&ri<=y){
if(d[wh]%k==)return;
if(cnt>=){
cnt++;
return;
}
}
if(le==ri){
cnt++;
return;
}
int mid=(le+ri)>>;
if(mid>=x)q(le,mid,wh<<,x,y,k);
if(mid<y)q(mid+,ri,wh<<|,x,y,k);
return;
}
int main(){
int n,m,i,j,k,x,y,z;
scanf("%d",&n);
for(i=;i<=n;i++)
scanf("%d\n",&a[i]);
build(,n,);
scanf("%d",&m);
for(i=;i<=m;i++){
scanf("%d",&k);
if(k==){
scanf("%d%d%d",&x,&y,&z);
cnt=;
q(,n,,x,y,z);
if(cnt>)puts("NO");
else puts("YES");
}else {
scanf("%d%d",&x,&y);
update(,n,,x,y);
}
}
return ;
}

914D Bash and a Tough Math Puzzle的更多相关文章

  1. Codeforces 914D - Bash and a Tough Math Puzzle 线段树,区间GCD

    题意: 两个操作, 单点修改 询问一段区间是否能在至多一次修改后,使得区间$GCD$等于$X$ 题解: 正确思路; 线段树维护区间$GCD$,查询$GCD$的时候记录一共访问了多少个$GCD$不被X整 ...

  2. Codeforces.914D.Bash and a Tough Math Puzzle(线段树)

    题目链接 \(Description\) 给定一个序列,两种操作:一是修改一个点的值:二是给一个区间\([l,r]\),问能否只修改一个数使得区间gcd为\(x\). \(Solution\) 想到能 ...

  3. 2018.12.08 codeforces 914D. Bash and a Tough Math Puzzle(线段树)

    传送门 线段树辣鸡题. 题意简述:给出一个序列,支持修改其中一个数,以及在允许自行修改某个数的情况下询问区间[l,r][l,r][l,r]的gcdgcdgcd是否可能等于一个给定的数. 看完题就感觉是 ...

  4. Codeforces 914D Bash and a Tough Math Puzzle (ZKW线段树)

    题目链接  Round #458 (Div. 1 + Div. 2, combined)  Problem D 题意  给定一个序列,两种询问:单点修改,询问某个区间能否通过改变最多一个数使得该区间的 ...

  5. [Codeforces 914D] Bash and a Tough Math Puzzle

    [题目链接] https://codeforces.com/contest/914/problem/D [算法] 显然 , 当一个区间[l , r]中为d倍数的数的个数 <= 1 , 答案为Ye ...

  6. Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论

    Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论 题意 给你一段数,然后小明去猜某一区间内的gcd,这里不一定是准确值,如果在这个区间内改变 ...

  7. CF 914 D. Bash and a Tough Math Puzzle

    D. Bash and a Tough Math Puzzle http://codeforces.com/contest/914/problem/D 题意: 单点修改,每次询问一段l~r区间能否去掉 ...

  8. D. Bash and a Tough Math Puzzle 解析(線段樹、數論)

    Codeforce 914 D. Bash and a Tough Math Puzzle 解析(線段樹.數論) 今天我們來看看CF914D 題目連結 題目 給你一個長度為\(n\)的數列\(a\), ...

  9. Bash and a Tough Math Puzzle CodeForces - 914D (线段树二分)

    大意:给定序列, 单点修改, 区间询问$[l,r]$内修改至多一个数后$gcd$能否为$x$ 这题比较有意思了, 要注意到询问等价于$[l,r]$内最多有1个数不为$x$的倍数 可以用线段树维护gcd ...

随机推荐

  1. BEC listen and translation exercise 9

    You will do foolish things, but do them with enthusiasm. 你难免会做傻事,但要做,就做得满怀激情. In addition, there sho ...

  2. 简单常用sql查询

    [self.db executeUpdate:sql, record.recordID]; CREATE TABLE scene_record(id TEXT PRIMARY KEY, record_ ...

  3. HihoCoder 1190连通性·四

    连通性·四 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho从约翰家回到学校时,网络所的老师又找到了小Hi和小Ho. 老师告诉小Hi和小Ho:之前的分组出了 ...

  4. Knuth-Morris-Pratt 算法

    KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法).KMP算法的关键是利用匹配 ...

  5. 2017/2/22怎么判断mongodb服务已经启动了?

    打开任务管理器,看看服务下面是否有个MongoDB,有就表示成功

  6. Oracle使用总结一

    一.修改表名要修改索引以及主键 ALTER TABLE AFA_AUTH_FUNCTION RENAME TO BACK_AFA_AUTH_FUNCTION ----修改表名 alter table ...

  7. CentOS 7 安装Percona,Xtrabackup

    CentOS 7 安装Percona 5.7,Xtrabackup 简介 Percona Server为 MySQL 数据库服务器进行了改进,在功能和性能上较 MySQL 有着很显著的提升.该版本提升 ...

  8. 把Azure专线从Class模式迁移到ARM模式

    前面几篇文章介绍了Azure的ASM模式和ARM模式.很多用户已经在ASM模式下部署了Azure的专线服务,如果部署的应用是ARM模式,或ASM模式和ARM模式都有,就需要把ASM模式的专线迁移到AR ...

  9. 通过扫码自定义链接安装iOS app,版本更新总结。

    1.打包ipa,plist工具:xcode6证书:企业级开发证书 1.1)xcode6开始企业级打包时不在生成plist,需要自己编写:模版见下: <?xml version="1.0 ...

  10. JavaScript基本概念A

    简介 如果需要了解这些概念, 您应该熟悉 JS 的基本知识. 弱类型 在也无需绞尽脑汁觉得到底采用 float.double,int 还是 short 或是 long 还是 String.只需这样定义 ...