ABC393E/F简要题解

ABC393E

给定数组 A A A,求包含元素 A i A_i Ai的大小为 k k k的子集中最大的最大公约数。

题解:

首先思考对于整个数组所有包含 k k k个元素的子集中最大的GCD是多少,可以怎么求。

我们发现,如果一个数 x x x,数组中如果存在至少 k k k个数是它的倍数,那么我们一定可以找到一个大小为 k k k的子集,使得 x x x是这个集合的公约数。

因为总的值域比较小,所以我们可以使用一个桶统计所有数字的出现次数,然后使用调和级数枚举的方式求出对于每个数 i i i,数组当中有多少数是它的倍数。

如果一个数 i i i,满足它的倍数个数在数组 A A A中的出现次数大于 k k k,那么对于所有 i i i的倍数,我们一定都能找到一个大小为 k k k的集合使得公约数是 i i i。所以我们可以维护一个ans数组, a n s i ans_i ansi表示如果选择了一个值为 i i i的数,最大的答案是多少。对于所有的 A i A_i Ai,直接输出对应的ans即可。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int n,k;
int a[2000005];
int cnt[1000005];
int sum[1000005];
int ans[2000005];
void solve(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];cnt[a[i]]++;}for(int i=1;i<=1e6;i++){for(int j=i;j<=1e6;j+=i){sum[i]+=cnt[j];}}for(int i=1;i<=1e6;i++){if(sum[i]>=k)for(int j=i;j<=1e6;j+=i){ans[j]=max(ans[j],i);//ans[j]=i;}}for(int i=1;i<=n;i++){cout<<ans[a[i]]<<endl;}
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);solve();
}

ABC393F

给定数组 A A A, q q q次询问前缀 r i r_i ri中所有小于 x i x_i xi的数组成的最长上升子序列是多少。

考虑二分栈求最长上升子序列做法,栈中元素表示对应LCS为 i i i时最后一个数字的最小值,所以我们可以直接将所有询问离线之后在对应的栈上二分找到答案即可。

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define pii pair<int,int>
using namespace std;
int n,q;
int a[200005];
vector<pii>ask[200005];
void solve(){cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=q;i++){int x,y;cin>>x>>y;ask[x].push_back({y,i});}vector<int>st(1,0);vector<int>ans(q+1,0);for(int i=1;i<=n;i++){int l=0,r=st.size()-1;while(l<=r){int mid=l+r>>1;if(st[mid]<a[i])l=mid+1;else r=mid-1;}if(l==st.size())st.push_back(a[i]);else st[l]=a[i];// cout<<i<<" "<<l<<"??\n";for(auto [y,id]:ask[i]){l=0,r=st.size()-1;while(l<=r){int mid=l+r>>1;if(st[mid]<=y)l=mid+1;else r=mid-1;}ans[id]=r;}}for(int i=1;i<=q;i++)cout<<ans[i]<<endl;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);solve();
}

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

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

相关文章

基于STM32的智能鱼塘养殖监控系统

1. 引言 水产养殖业正朝着智能化、精细化方向发展&#xff0c;传统养殖模式存在水质监控滞后、投喂不精准等问题。本文设计了一款基于STM32的智能鱼塘养殖监控系统&#xff0c;通过实时监测水质参数、自动投喂与远程管理&#xff0c;实现科学养殖&#xff0c;提高产量与经济效…

mapbox V3 新特性,添加下雪效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;mapbox 从入门到精通 文章目录 一、&#x1f340;前言1.1 ☘️mapboxgl.Map 地图对象…

Large Language Model Distilling Medication Recommendation Model

摘要&#xff1a;药物推荐是智能医疗系统的一个重要方面&#xff0c;因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是&#xff0c;目前使用的许多复杂模型往往忽视医疗数据的细微语义&#xff0c;而仅仅严重依赖于标识信息。此外&#xff0c;这些模型在处理首次就…

高血压危险因素分析(项目分享)

高血压危险因素分析&#xff08;项目分享&#xff09; 高血压作为一种极为常见的慢性疾病&#xff0c;正严重威胁着大众健康。它的发病机制较为复杂&#xff0c;涉及多个方面的因素。 在一份临床采集的数据的基础上&#xff0c;我们通过数据分析手段深入观察一下 BMI&#xf…

基于STM32的智能垃圾分类回收系统

1. 引言 随着城市化进程加快&#xff0c;传统垃圾处理方式已无法满足环保需求。本文设计了一款基于STM32的智能垃圾分类回收系统&#xff0c;通过图像识别、重量检测与自动分拣技术&#xff0c;实现垃圾精准分类&#xff0c;提高回收效率&#xff0c;助力城市可持续发展。 2. …

二、深入剖析线程安全性问题与底层原理

1.什么是线程安全&#xff1f;线程安全会带来哪些底层问题&#xff1f; 2.分析保证线程安全的三个性质-原子性、可见性、有序性 3.多场景剖析未保证原子性带来的问题 package imooc.atomic;public class AtomicTest {public static void main(String[] args) throws Interrupte…

IntelliJ IDEA 接入 AI 编程助手(Copilot、DeepSeek、GPT-4o Mini)

IntelliJ IDEA 接入 AI 编程助手&#xff08;Copilot、DeepSeek、GPT-4o Mini&#xff09; &#x1f4ca; 引言 近年来&#xff0c;AI 编程助手已成为开发者的高效工具&#xff0c;它们可以加速代码编写、优化代码结构&#xff0c;并提供智能提示。本文介绍如何在 IntelliJ I…

积家(Jaeger-LeCoultre):“钟表界的钟表师“(中英双语)

积家&#xff08;Jaeger-LeCoultre&#xff09;&#xff1a;瑞士高级制表的隐形巨匠 在瑞士高级制表领域&#xff0c;积家&#xff08;Jaeger-LeCoultre&#xff0c;简称JLC&#xff09; 被誉为“钟表界的钟表师”&#xff0c;它不仅是世界顶级腕表品牌之一&#xff0c;还为许…

Jenkins 新建配置Pipeline任务 三

Jenkins 新建配置Pipeline任务 三 一. 登录 Jenkins 网页输入 http://localhost:8080 输入账号、密码登录 一个没有创建任务的空 Jenkins 二. 创建 任务 图 NewItem 界面左上角 New Item 图NewItemSelect 1.Enter an item name&#xff1a;输入任务名 2.Select an ite…

盛铂科技 SMF106 低相位噪声贴片式频率综合器模块

在现代通信和电子设备领域&#xff0c;频率综合器作为关键组件&#xff0c;其性能优劣直接影响系统的整体表现。盛铂科技的 SMF106 低相位噪声贴片式频率综合器&#xff0c;以其卓越的性能和独特设计&#xff0c;成为众多高性能系统的选择。 一、频率覆盖范围广&#xff0c;步进…

ros:ur机械臂初识

这是用来可视化的launch文件 比如&#xff0c;我运行 roslaunch ur_description view_ur3.launch ur3模型 ur3e模型 ur5模型 ur5e模型 ur10模型 ur20模型 ur30模型 后来我搜了一下 UR5 和 UR10 都是由 Universal Robots&#xff08;简称 UR&#xff09;生产的协作机器人&…

智能陪诊与远程问诊:AI驱动的互联网医院APP开发路线图

智能陪诊与远程问诊作为现在医疗变革的前沿阵地&#xff0c;正在为广大患者提供更为便捷、高效的医疗服务。特别是在互联网医院APP的开发过程中&#xff0c;AI技术的应用已成为提升用户体验和医疗服务质量的重要手段。本文将探讨如何基于AI技术开发智能陪诊与远程问诊功能的互联…

pnpm, eslint, vue-router4, element-plus, pinia

利用 pnpm 创建 vue3 项目 pnpm 包管理器 - 创建项目 Eslint 配置代码风格(Eslint用于规范纠错&#xff0c;prettier用于美观&#xff09; 在 设置 中配置保存时自动修复 提交前做代码检查 husky是一个 git hooks工具&#xff08;git的钩子工具&#xff0c;可以在特定实际执行特…

格式工厂 FormatFactory v5.18.便携版 ——多功能媒体文件转换工具

格式工厂 FormatFactory v5.18.便携版 ——多功能媒体文件转换工具 功能&#xff1a;视频 音频 图片 文档PDF格式 各种转换&#xff0c;同格式调整压缩比例&#xff0c;调整大小 特色&#xff1a;果风图标 好看; 支持多任务队列&#xff0c;完成自动关机 下载地址&#xff1…

ai数字人分身系统开发源码saas化

#数字人分身系统# #数字人系统源码# #ai数字人123 123# 云罗抖去推数字人分身系统是一款融合了形象克隆、声音克隆、AI数字人分身、AI智能剪辑、智能文案等各种AI技术一体化的短视频营销工具&#xff0c;其核心功能优势主要体现在以下几方面&#xff1a; 真实度高&#xf…

基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

李宏毅机器学习笔记:【6.Optimization、Adaptive Learning Rate】

Optimization 1.Adaptive Learning Rate2.不同的参数需要不同的学习率3.Root Mean Square4.RMSProp5.Adam6.learning rate scheduling7.warm up总结 critical point不一定是你在训练一个network时候遇到的最大的障碍。 1.Adaptive Learning Rate 也就是我们要给每个参数不同的…

CAS单点登录(第7版)2.规划

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 规划 架构 系统组件 CAS 服务器和客户端构成了 CAS 系统体系结构的两个物理组件&#xff0c;它们通过各种协议进行通信。 CAS 服务器 CAS 服务器是基于 Spring Framework 构建的 Ja…

wx061基于ssm+vue+uniapp的疫情期间学生请假与销假系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

【动态规划】详解 0-1背包问题

文章目录 1. 问题引入2. 从 dfs 到动态规划3. 动态规划过程分析4. 二维 dp 的遍历顺序5. 从二维数组到一维数组6. 一维数组的遍历次序7. 背包的遍历顺序8. 代码总结9. 总结 1. 问题引入 0-1 背包是比较经典的动态规划问题&#xff0c;这里以代码随想录里面的例子来介绍下。总的…