[洛谷]P1890 gcd区间

洛谷 P1890 gcd区间(DP/线段树) 题目链接 首先做这道题要明白gcd的一个重要性质,即gcd区间具有可加性。假设我们对三个数求gcd,gcd(a,b,c)=gcd( gcd(a,b),c ) = gcd( gcd(b,c),a ) 本题应该有三种具体方法:线段树,ST表,DP。蒟蒻博主还不会ST表,于是就写了另外两种方法 DP 我们用一个二维数组ans[i][j] 表示区间 [i,j] 的gcd,由上述性质我们可以得出这样一个递推... 阅读详情
  1. 思路

         求区间GCD,已三个数GCD为例, 

         设三个数为a,b,c. _gcd(a, b, c) = _gcd(_gcd(a, b) ,c).

         整体思路, 全部数的gcd等于左半边的gcd和右半边gcd. 所以,思路使用线段树求gcd就好.

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 1005;
int a[N], tree[N<<2];
int n, m;
int lc(int p ) {
    return p << 1;
}
int rc(int p ) {
    return p << 1 | 1;
}
void pushup(int p, int l, int r) {
    tree[p] = __gcd(tree[lc(p)], tree[rc(p)]);
}
void buildTree(int p, int l, int r) {
    if(l == r) {
        tree[p] = a[l];
        return ;
    }
    int mid = l + r >> 1;
    buildTree(lc(p), l, mid);
    buildTree(rc(p), mid+1, r);
    pushup(p, l, r);

}

int query(int p, int l, int r, int ql , int qr) {
    if(l >= ql && r <= qr) {
        return tree[p];
    }
    int mid = l + r >> 1;
    int res = 0;
    if( ql <= mid ) {
        res = query(lc(p), l, mid , ql, qr);
    }
    if ( qr > mid ) {
        res = __gcd(res, query(rc(p), mid+1, r, ql, qr));
    }
    return res;
}

int main() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        scanf("%d", &a[i]);
    }
    buildTree(1, 1, n);

    for(int i = 1; i <= m; i++) {
        int x, y;
        scanf("%d%d", &x, &y);
        printf("%d\n", query(1, 1, n, x, y));
    }
    return 0;
}

 

小黄的刷题之路(十八)——ST表求解区间gcd问题 ST表,稀疏表,求解区间gcd问题,事实上ST表可以求解所有可重复贡献问题 阅读详情

相关推荐

vesta软件_分子动力学计算实战:利用 OVITO 软件找弗伦克尔缺陷和位错环分析

今天继续和大家分享这篇纯分子动力学(MD)的 Nat. Comm. 文章(DOI:10.1038/s41467-018-07102-3)。上期推文(从一篇 Nat. Comm. 学习经典分子动力学基本知识和相关软件基本操作 (一)),我们借用该文章的 fig.1 简单介绍了如何用文中所提到的 LAMMPS 软件来实现材料中级联碰撞过程。但是,想完整的展示类似该文章的 fig.1,单纯利用...

weixin_39524842的博客 5982

gcd的区间性质

gcd具有区间单调性: 对于gcd(l,r),l1<=l<=l2<=r2<=r<=r1,gcd(l2,r2)<=gcd(l,r)<=gcd(l1,r1) gcd具有区间反向包含性质: 对于gcd(l,r),gcd(l1,r1),l<=l1<=r1<=r2,gcd(l,r)一定是gcd(l1,r1)的因子 区间内不同的gcd是有限的...

qq_42897133的博客 1405

【SOC 芯片设计 DFT 学习专栏 -- DFT DRC规则检查】

在现代半导体设计中,DFT(Design for Test)技术的重要性不言而喻。它确保了芯片在制造完成后能够进行高效和可靠的测试。DFT设计规则检查(DRC)作为DFT流程中的一个关键环节,通过一系列自动化工具检测设计中的潜在问题,从而保证设计的可测试性和整体质量。在本文中,我们将详细探讨DFT DRC的概念、重要性、检查流程以及具体的规则和应用。Tessent是业界领先的DFT解决方案之一,其DRC工具通过一系列自动化检查,确保设计符合DFT要求。

CodingCos的博客 4167

区间gcd

Description 区间加减、区间gcdgcdgcd Solution 因为gcd(a,b)=gcd(a,b−a)gcd(a,b)=gcd(a,b-a)gcd(a,b)=gcd(a,b−a), 所以可以差分,gcd(al,al+1,...,ar)=gcd(al,al+1−al,...,ar−ar−1)gcd(a_l,a_{l+1},...,a_r)=gcd(a_l,a_{l+1}-a_l,.....

xumingyang0的博客 1877

零售-公司间关联交易退货STO的实现方式

零售-公司间关联交易采购 STO-退货 集团公司下经常会出现一家公司和另外一家公司的公司间的关联交易,如跨公司销售、总分公司之间采购,分公司之间的采购等业务;通常公司间采购会采取STO的模式来实现(根据业务模式可以将库存转储统一做成STO的模式,公司间STO、同公司工厂间、同工厂库存地点间 的STO SAP都是支持的); 公司间STO 正向A向B采购都很熟悉,公司间退货STO的其实也是比较普遍的业务现象,很多实施着也将其做成反向的STO(B向A采购),而不是退货STO(A向B,item 选择return的标

weixin_45518759的博客 2832

整车无线布置的综述

车载无线功能日益丰富,涵盖5G、GNSS、V2X等多种技术,布置需兼顾性能与美观。车顶是理想位置,鲨鱼鳍、后视镜等集成方案可优化空间。需考虑射频电缆损耗、GNSS天线视角、V2X全向覆盖等关键因素。整车测试需适应高频段需求,通过链路预算和互补天线设计优化信号。不同车型需定制方案,并注意抗干扰和多频段兼容性。(149字)

Godspeed_zwh的博客 1857

区间gcd的维护

区间GCD的修改和查找 链接 众所周知,gcd⁡(a,b)=gcd⁡(b,a−b)\gcd(a,b)=\gcd(b,a-b)gcd(a,b)=gcd(b,a−b),推广到333维,就是gcd⁡(a,b,c)=gcd⁡(a,b−a,c−b)\gcd(a,b,c)=\gcd(a,b-a,c-b)gcd(a,b,c)=gcd(a,b−a,c−b),依次类推,求下标在[i,j][i,j][i,j]里的所有数的gcd⁡\gcdgcd即为gcd⁡(ai,ai+1−ai,....,aj−aj−1)\gcd(a_i,a_{

weixin_45563175的博客 786

在cadence中进行sdf文件的反标及并进行数模混仿

3.在Main-Include Option Settings-Libraries Files/Directories下面加载上面说到的两个.v文件(综合文件和工艺库器件文件),其他默认点击OK;最近在做一个数模混合电路的流片工作,数字部分综合后会生成一个.sdf(标准延时格式)文件,正常来说应该是要在vcs软件上进行电路延时的反标,但由于我的电路需要信号在数字模块和模拟模块中来回循环多次,因此,打算在cadence中完成sdf文件反标,进行数模混合仿真。1.综合生成的电路网表的.v文件;

WSBHX的博客 3269

gcd的一些性质

对于一个区间的gcd,就是每个数的gcd。。 由于它在每个独立区间都是唯一的,多次重复计算结果是一样的,所以可以像求最值一样求gcd(线段树,rmq) 因为gcd相等的区间是连续的 而如果要查询gcd=x的区间个数,其实可以用枚举左端点二分。 如果要查的x很多。 就直接加个map 利用gcd区间的单调性预处理直接记录 就是利用gcd的性质。

-----PSI----- 3958

四足机器人跨楼层轨迹规划:SCAN-Planner-Pure-ROS2开源项目实践指南

在机器人导航领域,路径规划是让机器人从起点安全、高效移动到目标点的核心技术。其原理通常基于环境地图(如占据栅格地图或八叉树地图),通过搜索算法(如A*、RRT*)在配置空间中找到一条无碰撞的可行路径。这项技术的价值在于赋予机器人在复杂、非结构化环境中的自主移动能力,是巡检、救援、物流等应用场景的基石。对于四足机器人而言,其运动能力超越了轮式平台,能在楼梯、斜坡等三维地形中移动,这使得传统的二维规划不再适用,需要专门的三维轨迹规划算法。SCAN-Planner-Pure-ROS2正是这样一个专注于解决四足机器

weixin_30700977的博客 464

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 468

洛谷 P1890 gcd区间

P1890 gcd区间 题目提供者 洛谷OnlineJudge 标签 数论(数学相关) 难度 普及/提高- 题目描述 给定一行n个正整数a[1]..a[n]。 m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。 输入输出格式 输入格式: 第一行两个整数n,m。 第二行n个整数表示a[...

weixin_30679823的博客 172

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab程序)

组合预测模型 | LSTM-XGBoost长短期记忆神经网络结合极限梯度提升树时间序列预测(Matlab完整程序)

前程算法屋的博客 2180

洛谷 [P1890] gcd区间

因为本题的数据范围很小,所以可以预处理一个二维数组,O(1)查询,但是这是一道区间上的题,并且gcd有区间可加性,所以想到了用线段树来维护,然而此题并不用修改,ST表有着比线段树更小的常数。 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #...

236

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

洛谷P1890 gcd区间【dp】

目录 题目链接 思路 代码 题目链接 https://www.luogu.org/problemnew/show/P1890 思路 动态规划 设FijFijF_{ij}表示i到j之间的最大公因数 然后很容易就能得出来动态转移方程 Fij=gcd(Fij,Aj)Fij=gcd(Fij,Aj)F_{ij}=gcd(F_{ij},A_j) 然后其实AjAjA_j就是...

Ajwallet 575

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

洛谷——P1890 gcd区间

P1890 gcd区间 题目描述 给定一行n个正整数a[1]..a[n]。 m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。 输入输出格式 输入格式: 第一行两个整数n,m。 第二行n个整数表示a[1]..a[n]。 以下m行,每行2个整数表示询问区间的左右端点。 保证输入数据合法。 输出格式: 共m行,每行表示一个询问的...

weixin_33755554的博客 178

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

洛谷P1890gcd区间

这道题的题目描述: 题目描述 给定一行n个正整数a[1]..a[n]。 m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。 输入输出格式 输入格式:   第一行两个整数n,m。 第二行n个整数表示a[1]..a[n]。 以下m行,每行2个整数表示询问区间的左右端点。 保证输入数据合法。   输出格式:   共m行,每行表示一个询问的答案。 ...

L_Y_T020321的博客 422

洛谷P1890 gcd区间

题目描述 给定一行n个正整数a[1]..a[n]。 m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数。 输入输出格式 输入格式: 第一行两个整数n,m。 第二行n个整数表示a[1]..a[n]。 以下m行,每行2个整数表示询问区间的左右端点。 保证输入数据合法。 输出格式: 共m行,每行表示...

weixin_30417487的博客 202

【Luogu】每日一题——Day18. P1890 gcd区间 (ST表)

我们直接套用ST表求最大值的码,然后把 max 改成 gcd 即可。特别注意提前处理 log 更快哦。

qq_61422664的博客 187

P1890 gcd区间

P1890 gcd区间

ck的博客 236
上一篇: [算法]字符串的boader
下一篇: [洛谷]P3956 棋盘
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值