Frequent values/gcd区间

news2025/7/19 0:12:06

Frequent values 

思路: 

这题它的数据是递增的,ST表,它的最多的个数只会在在两个区间本身就是最多的或中间地方产生,所以我用map数组储存每个值的左右临界点,在ST表时比较多一个比较中间值的个数就Ok了。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define MAX0 16+1
typedef pair<int, int> pii;
pii a[100001][MAX0];
int Log[100001];
map<int, pii>p;
int n, m, l, r;
pii MAXX(pii x, pii y) {
    return x.second > y.second ? x : y;
}
void ChuLog() {
    Log[1] = 0;
    Log[2] = 1;
    for (int i = 3; i <= n; i++) {
        Log[i] = Log[i >> 1] + 1;
    }
}
void ChuST() {
    for (int j = 1; j <= Log[n]; j++) {
        for (int i = 1; i + (1 << j) - 1 <= n; i++) {
            a[i][j] = MAXX(a[i][j - 1], a[i + (1 << (j - 1))][j - 1]);
            pii o = p[a[i + (1 << (j - 1))][0].first];
            a[i][j] = MAXX(a[i][j], { a[i + (1 << (j - 1))][0].first,((i + (1 << j) - 1 > o.second ? o.second : i + (1 << j) - 1) - (i > o.first ? i : o.first) + 1) });
        }
    }
}
int main() {
    ios::sync_with_stdio(false);        // 禁用同步
    cin.tie(nullptr);                   // 解除cin与cout绑定
    cin >> n;
    while(n){
        cin >> m;
        int x;
        for (int i = 1; i <= n; i++) {
            cin >> a[i][0].first;
            a[i][0].second = 1;
            if (i == 0) {
                x = i;
            }
            else {
                if (a[i][0].first != a[i - 1][0].first) {
                    p[a[i - 1][0].first] = { x, (i - 1) };
                    x = i;
                }
            }
        }
        p[a[n][0].first] = { x, n };
        ChuLog();
        ChuST();
        while (m--) {
            cin >> l;
            cin >> r;
            int q = Log[r - l + 1];
            pii ww = MAXX(a[l][q], a[r - (1 << q) + 1][q]);
            pii o = p[a[r - (1 << q) + 1][0].first];
            ww = MAXX(ww, { a[r - (1 << q) + 1][0].first,((r > o.second ? o.second : r) - (l > o.first ? l : o.first) + 1) });
            cout << ww.second << endl;
        }
        cin >> n;
    }
    return 0;
}

gcd区间

Description

给定 nn 个正整数 a1,a2,…,an。

mm 次询问,每次询问给定一个区间 [l,r],输出 al,al+1,…,ar 的最大公因数。

Input

第一行两个整数 n,m。
第二行 n 个整数表示 a1,a2,…,an。
以下 m行,每行两个整数 l,r 表示询问区间的左右端点。

Output

共 mm 行,每行表示一个询问的答案。

Sample 1

InputcopyOutputcopy
5 3
4 12 3 6 7
1 3
2 3
5 5
1
3
7

Hint

  • 对于 30% 的数据,1≤n≤100,1≤m≤10;
  • 对于 60% 的数据,1≤m≤1000;
  • 对于 100% 的数据,1≤l≤r≤n≤1000,1≤m≤1061≤m≤106。

思路 :

就是简单的ST表题,但还要知道的是三个数的最大公因数就是两个数的最大公因数和第三个数的最大公因数,依次类推就ok了,还要知道最大公因数的运算方法。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define MAX0 9+1
int a[1001][MAX0];
int Log[1001];
int n, m, l, r;
int gcd(int i, int j) {
    int c;
    while (i % j != 0) {
        c = i % j;
        i = j;
        j = c;
    }
    return j;
}
void ChuLog() {
    Log[1] = 0;
    Log[2] = 1;
    for (int i = 3; i <= n; i++) {
        Log[i] = Log[i >> 1] + 1;
    }
}
void ChuST() {
    for (int j = 1; j <= Log[n]; j++) {
        for (int i = 1; i + (1 << j) - 1 <= n; i++) {
            a[i][j] = gcd(a[i][j - 1], a[i + (1 << (j - 1))][j - 1]);
        }
    }
}
int main(){
	ios::sync_with_stdio(false);        // 禁用同步
    cin.tie(nullptr);                   // 解除cin与cout绑定
    cin >> n >> m;
    for (int i = 1; i <= n; i++) {
        cin >> a[i][0];
    }
    ChuLog();
    ChuST();
    for (int i = 0; i < m; i++) {
        cin >> l >> r;
        int q = Log[r - l + 1];
        cout << gcd(a[l][q], a[r - (1 << q) + 1][q]) << endl;
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

08SpringBoot高级--自动化配置

目录 Spring Boot Starter 依赖管理解释 一、核心概念 二、工作原理 依赖传递&#xff1a; 自动配置&#xff1a; 版本管理&#xff1a; 三、核心流程 四、常用 Starter 示例 五、自定义 Starter 步骤 创建配置类&#xff1a; 配置属性&#xff1a; 注册自动配置&a…

Deep Evidential Regression

摘要 翻译&#xff1a; 确定性神经网络&#xff08;NNs&#xff09;正日益部署在安全关键领域&#xff0c;其中校准良好、鲁棒且高效的不确定性度量至关重要。本文提出一种新颖方法&#xff0c;用于训练非贝叶斯神经网络以同时估计连续目标值及其关联证据&#xff0c;从而学习…

「Python教案」循环语句的使用

课程目标 1&#xff0e;知识目标 能使用for循环和while循环设计程序。能使用循环控制语句&#xff0c;break、continue、else设计程序。能使用循环实际问题。 2&#xff0e;能力目标 能根据需求合适的选择循环结构。能对嵌套循环代码进行调试和优化。能利用循环语句设计&am…

linux快速入门-VMware安装linux,配置静态ip,使用服务器连接工具连接,快照和克隆以及修改相关配置信息

安装VMWare 省略&#xff0c;自己检索 安装操作系统-linux 注意&#xff1a;需要修改的我会给出标题&#xff0c;不要修改的直接点击下一步就可以 选择自定义配置 选择稍后安装操作系统 选择合适的内存 选择NAT模式 仅主机模式 虚拟机只能和主机通信&#xff0c;不能上网…

轻量化开源方案——浅析PdfPatcher实际应用

PDF处理在实际工作中十分重要&#xff0c;今天浅析PdfPatcher在PDF处理中的实际应用。 核心功能实测 批量处理能力 支持修改文档属性/页码编号/页面链接 一键清除复制/打印限制&#xff08;实测WPS加密文档可解锁&#xff09; 自动清理隐藏冗余数据&#xff08;经测试可平均…

Ansible常用Ad-Hoc 命令

1.配置sshpass yum install sshpass -y ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" # ssh-keygen密钥生成工具 -t密钥类型为dsa -f指定生成的密钥文件的路径。 -P&#xff1a;指定私钥的密码。 for i in seq 128 130; do sshpass -p123456 ssh-copy-id -i ~/.s…

[论文阅读]Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning

Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning [2402.08416] Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning 间接越狱攻击 GPT的RAG增强过程分四个阶段&#xff1a;❶GPT首先组织不同的用户上传的文档类型&#xff08;PDF、…

云效流水线Flow使用记录

概述 最近在频繁使用阿里云云效的几款产品&#xff0c;如流水线。之前写过一篇&#xff0c;参考云效流水线缓存问题。 这篇文章来记录更多问题。 环境变量 不管是云效流水线Flow还是应用交付AppStack&#xff08;基于流水线&#xff0c;后文不再赘述&#xff09;&#xff0…

OpenCV CUDA模块图像处理------颜色空间处理之颜色空间转换函数cvtColor()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数用于在 GPU 上进行颜色空间转换&#xff0c;支持多种常见的颜色空间转换操作。 函数原型 void cv::cuda::cvtColor (InputArray src…

科技初创企业创新推动商业未来

在这个因变革而蓬勃发展的世界里&#xff0c;科技初创企业已成为各行业创新、颠覆与转型的驱动力。这些雄心勃勃的企业正在重塑商业格局&#xff0c;挑战既定规范&#xff0c;并不断突破可能性的边界。本文将深入探索科技初创企业的精彩领域&#xff0c;探讨它们如何通过创新塑…

猿大师办公助手WebOffice用二进制数据流在Web前端打开Office文档

猿大师办公助手作为第三代WebOffice方案&#xff0c;猿大师办公助手把本地原生Office无缝嵌入网页环境中实现在线编辑Office功能&#xff0c;提供了完全与本机Office一致&#xff08;排版、打印等&#xff09;的操作体验&#xff0c;保留100%原生功能&#xff08;VBA宏、复杂公…

etcd:高可用,分布式的key-value存储系统

引言 etcd是基于go语言开发的一款kv存储引擎&#xff0c;基于raft一致性算法实现的一种存储 一.etcd的底层原理 1.etcd的特点 高可用性与一致性&#xff1a;etcd 使用 Raft 算法保证集群中数据的强一致性&#xff0c;即使在节点故障的情况下也能保持数据完整性。 分布式存储&a…

AI in Game,大模型能力与实时音视频技术融合,交出AI应用新答卷

随着AI的技术进步和工具普及&#xff0c;尤其是在这两年的跃进之后&#xff0c;AI在游戏行业内的应用已经逐步由理念设想推向落地实践。从蔡浩宇披露的AI新游《Whispers From The Star》到GDC上各大厂家呈现的游戏AI新亮点&#xff0c;我们看到了更多AI与游戏的结合方式&#x…

欢乐熊大话蓝牙知识11:如何打造一个低功耗蓝牙温湿度传感器?

🧊 如何打造一个低功耗蓝牙温湿度传感器? 用电像抠门老头,通信像特工密谈。 🌡️ 引子:为什么你需要一个低功耗 BLE 传感器? 你是不是有过这种需求: 想在办公室角落放个传感器看温湿度,却不想拉电源线?想给智能养宠箱加个环境感知模块,但不能三天一换电池?想造个…

Linux 安装 Remmina

欢迎关注公号&#xff1a;每日早参&#xff0c;第一时间获取AI资讯&#xff01; 为什么安装Remmina, 因为Mobaxterm免费版本有窗口限制。 Remmina 是一款功能强大的开源远程桌面客户端&#xff0c;适用于 Linux 和其他类 Unix 系统&#xff0c;也支持 Windows 平台。 安装指南…

什么是HTTP HTTP 和 HTTPS 的区别

HTTP协议定义 超文本传输协议&#xff08;HyperText Transfer Protocol, HTTP&#xff09;是一种应用层协议&#xff0c;主要用于客户端与服务器之间的数据交换。它基于请求-响应模型运行&#xff0c;在每次会话中由客户端发起请求&#xff0c;服务器返回相应的内容。 HTTP 是…

Pycharm and Flask 的学习心得(10)重定向

一 定义&#xff1a; 服务器告诉浏览器&#xff1a;你现在访问的这个页面&#xff0c;请改去另一个地址访问。 浏览器接收到这个“指令”后&#xff0c;会 自动跳转到另一个网页。 二 如何写&#xff1a; 方法一&#xff1a;重定向到网址 方法二&#xff1a;重定向到自己的…

单机Kafka配置ssl并在springboot使用

目录 SSL证书生成根证书生成服务端和客户端证书生成keystore.jks和truststore.jks辅助脚本单独生成truststore.jks 环境配置hosts文件kafka server.properties配置ssl 启动kafkakafka基础操作springboot集成准备工作需要配置的文件开始消费 SSL证书 证书主要包含两大类&#x…

C++23内存分配新特性:std::allocate_at_least

文章目录 一、背景与动机二、std::allocator::allocate_at_least的特性三、std::allocate_at_least的自由函数版本四、实际应用场景1. 动态容器的优化2. 自定义分配器 五、总结 在C23标准中&#xff0c; std::allocate_at_least和 std::allocator::allocate_at_least的引入为…

04-jenkins学习之旅-java后端项目部署实践

1、创建被管理项目 2、构建流程说明 jenkins其实就是将服务部署拆分成了&#xff1a; 1、拉取代码(git) 2、打包编译 3、自定义脚本(jar复制、执行启动脚本) 4、部署成功后的一些通知等 3、demo配置 3.1、General 3.2 源码管理 添加用户名密码方式如下图 3.2.1 常见错误(r…