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\), ...
随机推荐
- poj3216 Prime Path(BFS)
题目传送门 Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Sec ...
- Codeforces The Child and Toy
The Child and Toy time limit per test1 second On Children's Day, the child got a toy from Delayyy as ...
- spring 事物(一)—— 事物详解
事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 事务的特性 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么 ...
- Flask-SQLAlchemy使用方法
Flask-SQLAlchemy使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展.有关完整的指南,请参阅 SQLAlchemy 的 API 文档. 常见情况下对于只有一个 Flas ...
- TextView点击后背景颜色、文字颜色改变(转)
转自:http://blog.csdn.net/u013278940/article/details/51152655 TextView本没有点击效果,故为实现点击后文字颜色改变和背景改变,需要写se ...
- c++while控制语句
while语句结构:while(condition){ statement; } condition 表示返回值是true or false 如果返回的一直是true则statement语句则一直执行 ...
- webpack第一节(2)
安装webpack在文件夹中 安装完成如图所示 牛刀小试 在webpack-test根目录下新建一个hello.js (不新建在node-modules文件夹下面的目的是,该文件夹是webpack的依 ...
- 【Zookeekper】分布锁Curator
有序节点:假如当前有一个父节点为/lock,我们可以在这个父节点下面创建子节点:zookeeper提供了一个可选的有序特性,例如我们可以创建子节点“/lock/node-”并且指明有序,那么zooke ...
- 火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件
目前很多插件不支持 Firefox 3.5 哦1. Add N Edit Cookies 查看和修改本地的Cookie,Cookie欺骗必备. 下载:http://code.google.com/p/ ...
- 外部表及oracle数据库内存
create table alert1 (log varchar2(1000))2 organization external3 (type oracle_loader4 default direct ...