Bash and a Tough Math Puzzle 线段树维护区间gcd

还是一道很不错的题目,很容易想到用一棵线段树来维护区间gcd

注意用倍数来剪枝就好了,很是一到很好的题目的

#include<iostream>
#include<vector>
using namespace std;
const int N = 5e5+10;
int n,q;
struct Segment{int l,r;int d;
}tr[N<<2];int w[N];
int res;
int gcd(int a,int b){return b?gcd(b,a%b):a;
}void pushup(int u){tr[u].d = gcd(tr[u<<1].d,tr[u<<1|1].d);
}void build(int u,int l,int r){tr[u] = {l,r};if(l==r){tr[u].d = w[l];return;}int mid = l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);
}void modify(int u,int x,int c){if(tr[u].l==tr[u].r&&tr[u].l==x){tr[u].d = c;return; }int mid = (tr[u].l+tr[u].r)>>1;if(x<=mid)modify(u<<1,x,c);else modify(u<<1|1,x,c);pushup(u);
}void query(int u,int l,int r,int x){if(res>1)return;if(l<=tr[u].l&&tr[u].r<=r){if(tr[u].d%x==0)return;}if(tr[u].l==tr[u].r){res+=(tr[u].d%x!=0);return;}int mid = tr[u].l+tr[u].r>>1;if(l<=mid)query(u<<1,l,r,x);if(r>mid)query(u<<1|1,l,r,x);}int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=n;i++)cin>>w[i];cin>>q;build(1,1,n);while(q--){int op;cin>>op;if(op==1){int l,r,x;cin>>l>>r>>x;res = 0;query(1,l,r,x);if(res>1)cout<<"NO"<<"\n";else cout<<"YES\n";}else{int x,c;cin>>x>>c;modify(1,x,c);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/571872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧体育场馆的优势都有哪些?

体育场馆作为体育产业和事业发展的重要载体&#xff0c;全民对健康和运动的需求越来越大&#xff0c;体育馆的需求也更大。而以前的体育场馆管理不仅人工成本高&#xff0c;人民的使用和消费也不方便。因此智慧体育馆的出现大大降低了运营人力成本及现金管理风险&#xff0c;大…

20240320-2-线性回归+逻辑回归

线性回归于逻辑回归面试题 1. 简单介绍一下线性回归。 **线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。**这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简…

day35 贪心算法 part04● 860.柠檬水找零 ● 406.根据身高重建队列 ● 452. 用最少数量的箭引爆气球

一遍过&#xff0c;就是有10的时候尽量把10用掉&#xff0c;20是用不掉的&#xff0c;如果发现不够找回了&#xff0c;就return false。 class Solution { public:bool lemonadeChange(vector<int>& bills) {unordered_map<int,int> mp;for(int i0;i<bill…

利用正则表达式,在idea上搜索匹配替换

工作中需要改字 正则表达式记录下 block-?[1-9]\d*"

spring-boot-devtools配置和原理

一、前言 昨天&#xff0c;一个同事Eclipse在启动SpringBoot项目时一直不停地加载&#xff0c;后来发现是因为spring-boot-devtools造成的问题&#xff0c;因为我们把日志输出的目录设置在当前项目里&#xff08;~/mnt/logs/&#xff0c;这样设置是因为mac电脑没有根目录权限&…

I/O模型之A、B、C、D、E、F、G去火锅店吃火锅

目录 BIO Blocking I/O 即同步阻塞I/O NIO Non-Blocking I/O 即同步非阻塞I/O I/O多路复用 AIO Asynchronous I/O 异步I/O 总结 I/O&#xff1a;Input和Output BIO Blocking I/O 即同步阻塞I/O 应用程序发起read调用后&#xff0c;一直会阻塞&#xff0c;直到系统内核将…

【c++模板】泛型编程(你真的懂模版特化、分离编译和非类型参数吗)

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;模板 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;c大冒险 总有光环在陨落&#xff0c;总有新星在…

【2024系统架构设计】案例分析- 3 数据库

目录 一 基础知识 二 真题 一 基础知识 1 ORM ORM(Object—Relationl Mapping

【OS探秘】【虚拟化】【软件开发】在Windows 11上安装mac OS虚拟机

一、所需原料 Windows 11主机、Oracle VM VirtualBox虚拟化平台、mac OS 11镜像文件 二、安装步骤 1、 在VBox管理器中&#xff0c;点击“新建”&#xff0c;进入向导模式&#xff0c;指定各个字段&#xff1a;

46秒AI生成真人视频爆火,遭在线打假「换口型、声音」

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 是炒作还是真正的 AI 视频能力进化&#xff1f; AI 生成视频已经发展到这个程…

03---java面试八股文——mybatis-------8题

21、MyBatis实现一对一查询 MyBatis 有两种不同的方式加载关联&#xff1a; 嵌套 Select 查询&#xff1a;通过执行另外一个 SQL 映射语句来加载期望的复杂类型。嵌套结果映射&#xff1a;使用嵌套的结果映射来处理连接结果的重复子集。查看mybatis的关联 MyBatis是一种流行的J…

【Java程序设计】【C00344】基于Springboot的船舶维保管理系统(有论文)

基于Springboot的船舶维保管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 项目获取 &#x1f345;文末点击卡片获取源码&#x1f345; 开发环境 运行环境&#xff1a;推荐jdk1.8&#xff1b; 开发工具&#xff1a;eclipse以及i…