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的更多相关文章

  1. [CF914D]Bash and a Tough Math Puzzle

    给定一个数列$a_1,a_2,...,a_n$,支持两种操作 1 l r x,猜测数列中[l,r]位置上的数的最大公约数$x$,判断这个猜测是否是接近正确的.如果我们可以在数列[l,r]位置中改动至多 ...

  2. cf914D. Bash and a Tough Math Puzzle(线段树)

    题意 题目链接 Sol 直接在线段树上二分 当左右儿子中的一个不是\(x\)的倍数就继续递归 由于最多递归到一个叶子节点,所以复杂度是对的 开始时在纠结如果一段区间全是\(x\)的两倍是不是需要特判, ...

  3. CF914D Bash and a Tough Math Puzzle 线段树+gcd??奇怪而精妙

    嗯~~,好题... 用线段树维护区间gcd,按如下法则递归:(记题目中猜测的那个数为x,改动次数为tot) 1.若子区间的gcd是x的倍数,不递归: 2.若子区间的gcd是x的倍数,且没有递归到叶子结 ...

  4. [CF914D]Sum the Fibonacci

    题目   点这里看题目. 分析   我们先放宽条件,重新定义五元组\((a,b,c,d,e)\)如下:   1.\(1\le a,b,c,d,e\le n\).   2.\(s_a\&s_b= ...

  5. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  6. Noip 训练指南

    目录 Noip 训练指南 图论 数据结构 位运算 期望 题解 Noip 训练指南 目前完成 \(4 / 72\) 图论 [ ] 跳楼机 [ ] 墨墨的等式 [ ] 最优贸易 [ ] 泥泞的道路 [ ] ...

  7. 在$CF$水题の记录

    CF1158C CF1163E update after CF1173 很好,我!expert!掉rating了!! 成为pupil指日可待== 下次要记得合理安排时间== ps.一道题都没写的\(a ...

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

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

随机推荐

  1. poj3216 Prime Path(BFS)

    题目传送门  Prime Path The ministers of the cabinet were quite upset by the message from the Chief of Sec ...

  2. 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 ...

  3. spring 事物(一)—— 事物详解

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 事务的特性 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么 ...

  4. Flask-SQLAlchemy使用方法

    Flask-SQLAlchemy使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展.有关完整的指南,请参阅 SQLAlchemy 的 API 文档. 常见情况下对于只有一个 Flas ...

  5. TextView点击后背景颜色、文字颜色改变(转)

    转自:http://blog.csdn.net/u013278940/article/details/51152655 TextView本没有点击效果,故为实现点击后文字颜色改变和背景改变,需要写se ...

  6. c++while控制语句

    while语句结构:while(condition){ statement; } condition 表示返回值是true or false 如果返回的一直是true则statement语句则一直执行 ...

  7. webpack第一节(2)

    安装webpack在文件夹中 安装完成如图所示 牛刀小试 在webpack-test根目录下新建一个hello.js (不新建在node-modules文件夹下面的目的是,该文件夹是webpack的依 ...

  8. 【Zookeekper】分布锁Curator

    有序节点:假如当前有一个父节点为/lock,我们可以在这个父节点下面创建子节点:zookeeper提供了一个可选的有序特性,例如我们可以创建子节点“/lock/node-”并且指明有序,那么zooke ...

  9. 火狐插件火狐黑客插件将Firefox变成黑客工具的七个插件

    目前很多插件不支持 Firefox 3.5 哦1. Add N Edit Cookies 查看和修改本地的Cookie,Cookie欺骗必备. 下载:http://code.google.com/p/ ...

  10. 外部表及oracle数据库内存

    create table alert1 (log varchar2(1000))2 organization external3 (type oracle_loader4 default direct ...