【题解】CF2008G

news2024/9/21 12:30:50

题意翻译

原题链接CF2008G
在这里插入图片描述

思路

  由于操作次数不限,观察到所有操作都是可逆的,所以可以随便搞。然后观察mex函数,发现让所有数在不重复的情况下尽可能地小是最优的(重复就浪费了)。
  
  先不考虑重复和 0 0 0,对于 a 1 , a 2 , . . . a n a_{1}, a_{2},...a_{n} a1,a2,...an,经过无限次互相作差后,由欧几里得算法可知, g c d ( x , y ) = g c d ( x , y − x ) gcd(x, y) = gcd(x, y-x) gcd(x,y)=gcd(x,yx),令 g = g c d ( a 1 , . . . a n ) g=gcd(a_{1},...a_{n}) g=gcd(a1,...an),这些数最终会变成 n n n g g g
  
  然后再调整,避免重复。当 n ≠ 1 n \neq 1 n=1,让两个 g g g相减得到 0 0 0,再把其他多余的 g g g逐个加上去,最终变成 0 , g , . . . , ( n − 1 ) g 0, g, ..., (n-1)g 0,g,...,(n1)g。当 n = 1 n=1 n=1,动不了,特判即可。
  
  最后,计算第 k k k个未出现过的数,观察到 i g ig ig ( i + 1 ) g (i+1)g (i+1)g之间由 g − 1 g-1 g1个数未出现,所以令 m = k / ( g − 1 ) m = k / (g-1) m=k/(g1),即可定位到需要的数大致的位置然后分情况讨论:

  (1) n = = 1 n==1 n==1 g > k − 1 g > k-1 g>k1 ,直接取 0 → k − 1 0 \to k-1 0k1即可。
  (2) n = = 1 n==1 n==1 g ≤ k − 1 g \le k-1 gk1,取 0 , 1 , . . . g − 1 , g + 1 , . . . , k 0, 1, ... g-1, g+1, ..., k 0,1,...g1,g+1,...,k
  (3) g = = 1 g==1 g==1, 直接输出 k − 1 + n k-1+n k1+n。这里特判是为了防止后续计算中 g − 1 = 0 g-1=0 g1=0
  (4) n > 1 n>1 n>1, m > n − 1 m > n-1 m>n1,说明已有的数全部被用上了,直接输出 n + k − 1 n+k-1 n+k1
  (5) n > 1 n>1 n>1, m ≤ n − 1 m \le n-1 mn1, m ∗ ( g − 1 ) = = k m * (g-1) == k m(g1)==k,说明恰好填满空隙,输出 k + m − 1 k+m-1 k+m1
  (6) n > 1 n>1 n>1, m ≤ n − 1 m \le n-1 mn1, m ∗ ( g − 1 ) ≠ k m * (g-1) \neq k m(g1)=k,输出k+m。

  分类有点繁琐,可能有几类可以通过一个式子表达。

代码

#include<bits/stdc++.h>
#define N 200005
using namespace std;
int t, n, k, a[N];
int gcd(int x, int y) {
	if(y == 0) return x;
	return gcd(y, x%y);
}
int main() {
	cin>>t;
	while(t--) {
		cin>>n>>k;
		for(int i=1;i<=n;i++) cin>>a[i];
		int g = a[1];
		for(int i=2;i<=n;i++) g = gcd(g, a[i]);
		// 最优0, g, 2g, ..., (n-1)g   (n != 1)
		if(n == 1) {
			if(g > k-1) cout<<k-1<<endl;
			else cout<<k<<endl;
		} else if(g != 1){
			int m = k / (g-1);  //填满m个间隙 
			if(m > n-1) {
				cout<<k-1+n<<endl;
			} else {
				if(m * (g-1) == k){   // 恰好 
					cout<<k+m-1<<endl;
				} else {
					cout<<k+m<<endl;
				}
			}
		} else {
			// 0, 1, 2, ..., n-1
			cout<<k-1+n<<endl;
		}
	}
} 

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

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

相关文章

Ali_Yun Port

Ali_Yun Port 云服务器端口

【信创】加装硬盘后如何迁移微信数据到新磁盘 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【信创】Linux加装硬盘后如何迁移微信数据到新磁盘 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在Linux系统中加装新硬盘后&#xff0c;如何将微信等数据迁移到新磁盘的文章。在使用过程中&#xff0c;随着数据量的…

拱式桥安全结构健康监测解决方案

拱式桥作为一种常见的桥梁结构&#xff0c;其拱形设计不仅美观&#xff0c;还具有较高的承载能力。然而&#xff0c;随着使用年限的增加和环境因素的影响&#xff0c;拱式桥的结构健康和稳定需要持续监测和评估。自动化监测技术的应用&#xff0c;可以提升拱式桥的监测效率和准…

快速使用react 全局状态管理工具--redux

redux Redux 是 JavaScript 应用中管理应用状态的工具&#xff0c;特别适用于复杂的、需要共享状态的中大型应用。Redux 的核心思想是将应用的所有状态存储在一个单一的、不可变的状态树&#xff08;state tree&#xff09;中&#xff0c;状态只能通过触发特定的 action 来更新…

代码随想录训练营 Day58打卡 图论part08 拓扑排序 dijkstra(朴素版)

代码随想录训练营 Day58打卡 图论part08 一、拓扑排序 例题&#xff1a;卡码117. 软件构建 题目描述 某个大型软件项目的构建系统拥有 N 个文件&#xff0c;文件编号从 0 到 N - 1&#xff0c;在这些文件中&#xff0c;某些文件依赖于其他文件的内容&#xff0c;这意味着如果…

用Python实现时间序列模型实战——Day 18: 时间序列中的季节性与周期性预测

一、学习内容 1. 季节性调整与周期性预测 季节性调整 是在时间序列分析中常用的技术&#xff0c;旨在去除数据中因季节性波动导致的周期性变化&#xff0c;使数据更易于解释和预测。通常&#xff0c;我们可以使用季节性分解方法来分离时间序列中的趋势、季节性和随机成分。 …

JAVA实现压缩包解压兼容Windows系统和MacOs

目标&#xff1a;JAVA实现压缩包解压获取图片素材 问题&#xff1a;Windows系统和MacOs压缩出来的zip内容有区别 MacOs会多出来 以及本身一个文件夹 而windows则不会。为了解决这个问题。兼容mac的压缩包增加一层过滤 要知道 ZipInputStream 可以读取 ZIP 文件中的条目&…

KTV 营业明细+员工提成—SAAS本地化及未来之窗行业应用跨平台架构

一、ktv 绩效必要性 1. 激励员工积极性&#xff1a;提成制度能够直接将员工的努力和收入挂钩&#xff0c;促使员工更加积极主动地工作&#xff0c;以获取更高的收入。 2. 提高工作效率和业绩&#xff1a;为了获得更多提成&#xff0c;员工会努力提高工作效率&#xff0c;增加业…

别中招!从“超低利率“到“包过承诺“,揭秘贷款几大陷阱!

今天咱们聊聊贷款时得防的那些坑&#xff0c;免得一不小心就被套路了。你以为找了个靠谱帮手&#xff0c;结果却是步步陷阱&#xff0c;咱们一起来揭秘这些招数&#xff0c;也给大伙儿提个醒。 第一招&#xff0c;低利率诱惑。正常普通信用贷款服务费是2-15%个点内&#xff0c;…

第十七节:学习Hutool上传文件(自学Spring boot 3.x的第四天)

这节记录下如何使用Hutool库上传本地的文件到服务器端&#xff08;因为是练习&#xff0c;所以是本地端&#xff09;。 第一步&#xff1a;引入Hutool库最新版本&#xff0c;通过maven方式。&#xff08;最新版本需去maven仓库查询&#xff09; 第二步&#xff1a;编写一个post…

Django路由访问及查询数据

1、在应用模块下&#xff0c;创建urls文件&#xff0c;用来存放访问路由 2、在项目总访问url里面注册路由 3、在view文件里&#xff0c;定义方法参数 from django.core import serializers from django.db import connection from django.http import HttpResponse, JsonRespo…

【佳学基因检测】在织梦网站中, 创建或修改目录:/var/www/html/cp 失败! DedeTag Engine Create File False

【佳学基因检测】在织梦网站中, 创建或修改目录&#xff1a;/var/www/html/cp 失败&#xff01; DedeTag Engine Create File False 在使用 DedeCMS&#xff08;一个常用的内容管理系统&#xff09;时&#xff0c;如果遇到“创建或修改目录&#xff1a;/var/www/html/cp 失败&…

背靠大众,「半价Model 3」卖爆,小鹏走出低谷

‍作者 |老缅 编辑 |德新 各路消息都在显示&#xff0c;小鹏MONA M03爆单了。 总裁王凤英在庆功宴上喝下了人生第一杯酒。 小鹏MONA产品线负责人透露&#xff0c;上市后的两天内&#xff0c;MONA全国的试驾车累计开了超过10万公里。 在上市后的48小时内&#xff0c;M03获得…

华为OD机试 - 周末爬山 - 广度优先搜索BFS(Python/JS/C/C++ 2024 E卷 200分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Mysql基础——DML

数据操作语言&#xff08;DML&#xff0c;Data Manipulation Language&#xff09; DML语句用于对数据库中的数据进行操作&#xff08;增删改查数据&#xff09;&#xff0c;主要包括&#xff1a; INSERT&#xff1a;向表中插入数据&#xff0c;例如 INSERT INTO table_name …

超简单,3步训练Flux Lora模型,附整合包!

超简单&#xff0c;3步训练Flux Lora模型&#xff0c;附整合包&#xff01; &#x1f389; 12G显存也能炼Flux Lora模型&#xff1f;&#xff01;3步速成&#xff0c;小白也能轻松上手&#xff01; 兄弟们&#xff01;AI绘画领域又迎来了一波革命&#xff01;Flux Lora模型训练…

2024中国500强企业高峰论坛安然大健康分论坛圆满举办!

一场巅峰聚首的风云际会&#xff0c;一次引领未来的行业盛宴。 9月10日至11日&#xff0c;由中国企业联合会、中国企业家协会主办的2024中国500强企业高峰论坛在天津举行&#xff0c;本届高峰论坛以“向‘新’而行、打造更多世界一流企业”为主题&#xff0c;汇集业内知名企业…

利用AI驱动智能BI数据可视化-深度评测Amazon Quicksight(三)

简介 随着生成式人工智能的兴起&#xff0c;传统的 BI 报表功能已经无法满足用户对于自动化和智能化的需求&#xff0c;今天我们将介绍亚马逊云科技平台上的AI驱动数据可视化神器 – Quicksight&#xff0c;利用生成式AI的能力来加速业务决策&#xff0c;从而提高业务生产力。…

【Qt应用】Qt编写简易登录注册界面

目录 引言 一、准备工作 二、设计思路 2.1 登录 2.2 注册 三、登录功能 3.1 创建账号与密码输入框 3.2 设置密码输入框格式 3.2.1 初始 3.2.2 创建一个显示隐藏按钮 3.2.3 信号与槽函数 3.3 创建登录按钮 3.4 创建可选功能 四、注册功能 4.1 账号和密码输入…

【Go】深入探索Go语言中运算符

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…