【CF补题数学裴蜀定理】 div969 C Dora and C++

Dora and C++

在这里插入图片描述


分析:

对于两个数x,y
我们想要通过如下操作使得他们的差变得尽可能小
我们要如何操作?
这个操作也就是相当于 d e l = ∣ y − x ∣ − k 1 ∗ x − k 2 ∗ y del=|y-x|-k_1*x-k_2*y del=yxk1xk2y,让这个差值最小
对于 k 1 ∗ x + k 2 ∗ y k_1*x+k_2*y k1x+k2y这个操作
根据裴蜀定理,我们知道 k 1 x + k 2 y = k ∗ g c d ( x , y ) k_1x+k_2y=k*gcd(x,y) k1x+k2y=kgcd(x,y)
也就是说通过这个操作得到的数,一定是 g c d ( x , y ) gcd(x,y) gcd(x,y)的倍数
那么, M i n ( d e l ) = ∣ y − x ∣ % g c d Min(del)=|y-x|\%gcd Min(del)=yx∣%gcd
我们对上式的 x , y x,y x,y用另一种形式表示:
x = X + k x g c d x=X+k_xgcd x=X+kxgcd
y = Y + k y g c d y=Y+k_ygcd y=Y+kygcd
∣ y − x ∣ = ∣ Y − X + ( k y − k x ) g c d ∣ |y-x|=|Y-X+(k_y-k_x)gcd| yx=YX+(kykx)gcd
经过 m o d mod mod意义之后,其实 ∣ y − x ∣ m i n = ∣ Y − X ∣ |y-x|_{min}=|Y-X| yxmin=YX
其实就是说,x和y在这个条件下可以等价于 x % g c d 以及 y % g c d x\%gcd以及y\%gcd x%gcd以及y%gcd
他们的差值最小值也就是取模意义之后两数的差的绝对值

那么对于这道题而言,最小的差值就是每个数 M o d g c d Mod\ gcd Mod gcd意义下的极差。

但是其实并不完全。
比如取模意义后两个数变成0和2,而gcd=3
实际上可以让0+3,再和2去做差
这个其实就类似于一个环形的问题
跨越之后可能让差值更小


#include<bits/stdc++.h>
using namespace std;#define int long longconst int N = 2e5+100;
int n,x,y;
int a[N];int gcd(int x,int y){return y == 0?x:gcd(y,x%y);
}void Work(){cin>>n>>x>>y;int g = gcd(x,y);for (int i = 1; i <= n; i++) cin>>a[i],a[i]%=g;sort(a+1,a+n+1);for (int i = n+1; i <= 2*n; i++) a[i] = a[i-n]+g;int Min = 1e9+7;for (int i = 1; i <= n+1; i++)Min = min(Min,a[i+n-1]-a[i]);cout<<Min<<endl;return;
}signed main(){int t; cin>>t;while (t--) Work();return 0;
}

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

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

相关文章

【网络安全】IDOR之敏感数据泄露

未经许可,不得转载。 文章目录 正文正文 在测试“添加到收藏夹”功能时,我拦截了发送到服务器的请求,请求体如下: {“uriTemplate”:“asset/{assetId}/favorite”,“version”:“v2”,“type”:“POST”,“req_service”:“pict”,“url”:“asset/VICTIMS_ASS…

Android Google Maps

Android 谷歌地图 前言正文一、设置Google Cloud 项目二、项目配置① 设置SDK② 配置API密钥③ 配置AndroidManifest.xml 三、添加地图四、定位当前① 请求定位权限② 我的位置控件③ 获取当前位置 五、配置地图① xml配置地图② 代码配置地图③ 地图点击事件④ 管理Marker 六、…

薛定谔的空气墙?一文带你了解其背后的技术原理

封面图 悟空来了都得撞墙&#xff1f; 目前&#xff0c;被称作“村里第一个大学生”的国产3A游戏《黑神话&#xff1a;悟空》发售已经有一段时间了&#xff0c;游戏采用虚幻引擎4技术&#xff0c;仿佛将传统与现代的界限模糊&#xff0c;玩家游玩时沉浸感极强。然而&#xff…

自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法

注&#xff1a;此文章内容均节选自充电了么创始人&#xff0c;CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》&#xff08;人工智能科学与技术丛书&#xff09;【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十三文本聚类算法》文本聚类介绍及相关算法K…

四、基本电路设计笔记——4.1 DC-DC稳压电路

目录 4.1 DC-DC稳压电路 4.1.1 基于MT2492的DC-DC稳压电路 &#xff08;1&#xff09;芯片参数 &#xff08;2&#xff09;芯片引脚 &#xff08;3&#xff09;输出电压设置 4.1.2 基于MT2499A的DC-DC稳压电路 &#xff08;1&#xff09;芯片参数 &#xff08;2&#xf…

多模态生成发文量大涨!最新成果统一Transformer和Diffusion,含金量超高

最近多模态生成领域也在“神仙打架”&#xff0c;比如Meta的全新训练方法Transfusion&#xff0c;用单个模型就能同时生成文本和图像&#xff01; 还有之前华为、清华提出的个性化多模态内容生成技术PMG&#xff0c;生成的内容可“量身定制”&#xff0c;更能满足偏好。 这些…

深入解析Linux轻量级进程:线程的概念、原理、优缺点及其与进程的关系与区别

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f4da;Linux线程&#x1f4d5;什么是线程*可以使用多进程去并发的执行一个进程的代码&#xff0c;那为什么要由线程呢&#x…

搭子小程序开发,让社交更加有趣

如今&#xff0c;搭子成为了年轻人社交的新兴方式&#xff0c;它作为一种连接年轻人的社交纽带&#xff0c;深受大众的欢迎&#xff01;各式各样的旅游搭子、健身搭子、游戏搭子等&#xff0c;让年轻人享受到社交的魅力。 随着互联网的发展&#xff0c;寻找搭子也发展到了线上…

一个好用的Maven依赖冲突解决插件:Maven Helper

在项目开发&#xff0c;或项目Maven需要新增依赖、项目依赖组件升级时&#xff0c;经常会出现添加后&#xff0c;因为各个模块中有相同的依赖、不同的版本而导致依赖冲突&#xff0c;从而导致项目启动不起来&#xff0c;这种冲突非常恶心&#xff0c;因为是传递依赖所以会看不出…

Hackme靶场渗透攻略

步骤一&#xff0c;注册登录进去 步骤二&#xff0c;点击search 我们发现有很多书 步骤三&#xff0c;搜索一本书抓包发放到重放器 步骤四&#xff0c;数据改为1*&#xff0c;复制数据包到1.txt&#xff0c;然后打开sqlmap 步骤五&#xff0c;sqlmap查看当前数据库 python s…

多模态AI:原理、应用与未来展望

随着人工智能技术的飞速发展&#xff0c;多模态AI逐渐成为构建智能系统的重要方向。传统的AI系统通常依赖于单一模态的数据&#xff0c;如文本、图像或音频。而多模态AI通过结合多种数据类型&#xff0c;能够在更复杂的场景下提供更智能的解决方案。本文将深入探讨多模态AI的原…

Android 11 (R)AMS Activity内部机制

一、AMS是如何被管理的 如我们在Android 11(R)启动流程中介绍的一样&#xff0c;AMS和ATMS是在SystemServer中被启动的 ActivityTaskManagerService atm mSystemServiceManager.startService(ActivityTaskManagerService.Lifecycle.class).getService(); mActivityManagerSe…

使用vscode debug cpp/python混合编程的程序(从python调用的C++编译的dll)

使用vscode debug cpp/python混合编程的程序&#xff08;从python调用的C编译的dll&#xff09; 1. 安装插件 Python C Debugger https://marketplace.visualstudio.com/items?itemNamebenjamin-simmonds.pythoncpp-debug 2. 在.vscode/launch.json中增加配置 拷贝自 https:…

默默的学python——两个重要的函数dir()、help()

一、dir()函数 dir()函数在Python中用于返回一个对象的所有属性和方法的列表&#xff0c;当你对一个函数使用dir()时&#xff0c;它会返回函数对象的所有可访问的属性和方法的名字列表。 具体的说&#xff0c;dir()函数获取的内容包括&#xff1a; 1.特殊方法和魔法方法 如…

Kettle 锁表原因及解决办法【源码级分析】

文章目录 背景源码分析锁表场景1:资源库锁表锁表场景2:写日志锁表在哪里配置的kettle_log_table?官方解释自增 SQL 获取 BatchI 原理解决自增 SQL 获取 BatchID背景 Kettle 7.1.0 经常出现锁表的情况,体现为在数据库里有一条锁表 SQL,然后整个 Kettle 都无法运行。😂�…

App推广新姿势:Xinstall一键下载唤起,轻松提升用户体验!

在App推广和运营的道路上&#xff0c;你是否遇到过这样的困扰&#xff1a;用户点击下载链接后&#xff0c;却无法直接唤起App&#xff0c;导致用户体验不佳&#xff0c;甚至造成用户流失&#xff1f;别担心&#xff0c;今天我们就来科普一个神器——Xinstall&#xff0c;它能帮…

【GIT】idea中实用的git操作,撤回commit,撤回push、暂存区使用

IDEA中最常见的UI操作&#xff1a;【GIT】Idea中的git命令使用-全网最新详细&#xff08;包括现象含义&#xff09; 文章目录 问题一&#xff1a; idea撤回仅commit错误的代码&#xff08;仅本地仓库&#xff0c;因为还没推送到远程&#xff09;问题二&#xff1a; idea撤回Com…

8个优质视频素材库,商用无忧

如果你正在寻找一些优质的视频素材库&#xff0c;不妨看看以下这些网站。它们提供了各种各样的视频素材&#xff0c;无论是用于家庭视频制作、Vlog、还是社交媒体内容&#xff0c;都能找到合适的素材。从生活日常到创意动画&#xff0c;这些网站都能帮你找到想要的视频素材。一…

学习react day01

&#xff08;1&#xff09;nodejs.cn 中文网 版本须较新 &#xff08;2&#xff09;全局安装 npm install create-react-app -g &#xff08; 版本查询 create-react-app -V&#xff09; &#xff08;3&#xff09;创建app create-react-app test-app &#xff08;4&…

5 - ZYNQ GPIO

文章目录 1 GPIO基本概念1.1 MIO-EMIO简介1.2 MIO-EMIO连接1.3 MIO-EMIO路由1.4 MIO-EMIO配置 2 GPIO控制寄存器2.1 输入/输出控制寄存器2.2 中断控制寄存器2.3 中断触发设置 3 GPIO在Vivado SDK中的使用 1 GPIO基本概念 在ZYNQ中&#xff0c;GPIO&#xff08;General Purpose…