CF914D
CF914D
用线段树乱搞一下就行qwq
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int M = 3000001;
int n,m,k,a[M],d[M],al,ar,tp,s;
int gcd(int x,int y)
{
if(!y) return x;
return gcd(y,x%y);
}
void built(int now,int l,int r)
{
if(l==r)
{
d[now]=a[l];
return ;
}
int mid=(l+r)>>1;
built(now*2,l,mid);
built(now*2+1,mid+1,r);
d[now]=gcd(d[now*2],d[now*2+1]);
}
void ask(int now,int l,int r,int L,int R,int k)
{
if(l==r)
{
s++;
return;
}
int mid=(l+r)>>1;
if(L<=l && r<=R)
{
if(d[now]%k==0) return ;
if(d[now*2]%k && d[now*2+1]%k) return s+=2,void();
if(d[now*2]%k) ask(now*2,l,mid,L,R,k);
else ask(now*2+1,mid+1,r,L,R,k);
return ;
}
if(d[now*2]%k && L<=mid) ask(now*2,l,mid,L,R,k);
if(s>1) return;
if(d[now*2+1]%k && R>mid) ask(now*2+1,mid+1,r,L,R,k);
return;
}
void mody(int now,int l,int r,int x,int k)
{
if(l==r) return d[now]=k, void();
int mid=(l+r)>>1;
if(x<=mid) mody(now*2,l,mid,x,k);
else mody(now*2+1,mid+1,r,x,k);
d[now]=gcd(d[now*2],d[now*2+1]);
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
built(1,1,n);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&tp);
if(tp==1)
{
scanf("%d%d%d",&al,&ar,&k);
s=0; ask(1,1,n,al,ar,k);
if(s<2) printf("YES\n");
else printf("NO\n");
}
else
{
scanf("%d%d",&al,&ar);
mody(1,1,n,al,ar);
}
}
}
CF914D的更多相关文章
- [CF914D]Bash and a Tough Math Puzzle
给定一个数列$a_1,a_2,...,a_n$,支持两种操作 1 l r x,猜测数列中[l,r]位置上的数的最大公约数$x$,判断这个猜测是否是接近正确的.如果我们可以在数列[l,r]位置中改动至多 ...
- cf914D. Bash and a Tough Math Puzzle(线段树)
题意 题目链接 Sol 直接在线段树上二分 当左右儿子中的一个不是\(x\)的倍数就继续递归 由于最多递归到一个叶子节点,所以复杂度是对的 开始时在纠结如果一段区间全是\(x\)的两倍是不是需要特判, ...
- CF914D Bash and a Tough Math Puzzle 线段树+gcd??奇怪而精妙
嗯~~,好题... 用线段树维护区间gcd,按如下法则递归:(记题目中猜测的那个数为x,改动次数为tot) 1.若子区间的gcd是x的倍数,不递归: 2.若子区间的gcd是x的倍数,且没有递归到叶子结 ...
- [CF914D]Sum the Fibonacci
题目 点这里看题目. 分析 我们先放宽条件,重新定义五元组\((a,b,c,d,e)\)如下: 1.\(1\le a,b,c,d,e\le n\). 2.\(s_a\&s_b= ...
- Noip前的大抱佛脚----赛前任务
赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...
- Noip 训练指南
目录 Noip 训练指南 图论 数据结构 位运算 期望 题解 Noip 训练指南 目前完成 \(4 / 72\) 图论 [ ] 跳楼机 [ ] 墨墨的等式 [ ] 最优贸易 [ ] 泥泞的道路 [ ] ...
- 在$CF$水题の记录
CF1158C CF1163E update after CF1173 很好,我!expert!掉rating了!! 成为pupil指日可待== 下次要记得合理安排时间== ps.一道题都没写的\(a ...
- D. Bash and a Tough Math Puzzle 解析(線段樹、數論)
Codeforce 914 D. Bash and a Tough Math Puzzle 解析(線段樹.數論) 今天我們來看看CF914D 題目連結 題目 給你一個長度為\(n\)的數列\(a\), ...
随机推荐
- this.$router.push相关的vue-router的导航方法
this.$router.push相关的vue-router的导航方法:https://blog.csdn.net/zeroyulong/article/details/80312750
- centos netstat 查看是否开放了端口
netstat命令各个参数说明如下: -a :所有 -t : 指明显示TCP端口 -u : 指明显示UDP端口 -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protoc ...
- Centos 安装vnc / vncserver
一.安装 以root用户运行以下命令来安装vncserver; yum install tigervnc-server 同样运行以下命令来安装vncviewer; yum install vnc 停止 ...
- JS事件委托(事件代理,dom2级事件)
一.前言 说实话,真问我什么是事件委托,我肯定gg,还好查了一下,原来就是我之前练习过的DOM2级事件的应用. 二.什么是事件委托? 事件委托就是当事件触发时,把要做的事委托给父元素(或父元素的父元素 ...
- Facade——外观模式
Facade外观模式,也是比较常用的一种模式,基本上所有软件系统中都会用到. GOF 在<设计模式>一书中给出如下定义:为子系统中的一组接口提供一个一致的界面, Facade 模式定义了一 ...
- lsyncd+rsync文件实时同步
1.rsync两端都需要安装 yum -y install rsync 2.提供lsyncd的安装源 rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x ...
- springboot配置redis+jedis,支持基础redis,并实现jedis GEO地图功能
Springboot配置redis+jedis,已在项目中测试并成功运行,支持基础redis操作,并通过jedis做了redis GEO地图的java实现,GEO支持存储地理位置信息来实现诸如附近的人 ...
- [REPRINT]MODIFYING USER ACCOUNTS(usermod)
http://landoflinux.com/linux_usermod_command.html Append Additional Groups to an exiting account use ...
- Nacos 常见问题及解决方法
Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...
- c#如何写服务,打包和卸载服务
Service.cs 每隔一分钟进行一次数据操作 public Service1() { InitializeComponent(); Sy ...