news 2026/5/23 14:02:15

GESP认证C++编程真题解析 | P14917 [GESP202512 五级] 数字移动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | P14917 [GESP202512 五级] 数字移动

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:[P14917 GESP202512 五级] 数字移动 - 洛谷

【题目描述】

小 A 有一个包含N NN个正整数的序列A = { A 1 , A 2 , ⋯ , A N } A=\{A_1,A_2,\cdots,A_N\}A={A1,A2,,AN},序列A AA恰好包含N 2 \frac{N}{2}2N对不同的正整数。形式化地,对于任意1 ≤ i ≤ N 1 \le i \le N1iN,存在唯一一个j jj满足1 ≤ j ≤ N , i ≠ j , A i = A j 1\le j \le N, i\neq j, A_i=A_j1jN,i=j,Ai=Aj

小 A 希望每对相同的数字在序列中相邻,为了实现这一目的,小 A 每次操作会选择任意i ( 1 ≤ i ≤ N ) i(1\le i\le N)i(1iN),将当前序列的第i ii个数字移动到任意位置,并花费对应数字的体力。

例如,假设序列A = { 1 , 2 , 1 , 3 , 2 , 3 } A=\{1,2,1,3,2,3\}A={1,2,1,3,2,3},小 A 可以选择i = 2 i=2i=2,将A 2 = 2 A_2=2A2=2移动到A 3 = 1 A_3=1A3=1的后面,此时序列变为{ 1 , 1 , 2 , 3 , 2 , 3 } \{1,1,2,3,2,3\}{1,1,2,3,2,3},耗费2 22点体力。小 A 也可以选择i = 3 i=3i=3,将A 3 = 1 A_3=1A3=1移动到A 2 = 2 A_2=2A2=2的前面,此时序列变为{ 1 , 1 , 2 , 3 , 2 , 3 } \{1,1,2,3,2,3\}{1,1,2,3,2,3},花费1 11点体力。

小 A 可以执行任意次操作,但他希望自己每次花费的体力尽可能小。小 A 希望你能帮他计算出一个最小的x xx,使得他能够在每次花费的体力均不超过x xx的情况下令每对相同的数字在序列中相邻。

【输入】

第一行一个正整数N NN,代表序列长度,保证N NN为偶数。

第二行包含N NN个正整数A 1 , A 2 , … , A N A_1,A_2,\ldots,A_NA1,A2,,AN,代表序列A AA。且对于任意1 ≤ i ≤ N 1\le i\le N1iN,存在唯一一个j jj满足1 ≤ j ≤ N , i ≠ j , A i = A j 1\le j\le N,i\neq j,A_i=A_j1jN,i=j,Ai=Aj

数据保证小 A 至少需要执行一次操作。

【输出】

输出一行,代表满足要求的x xx的最小值。

【输入样例】

6 1 2 1 3 2 3

【输出样例】

2

【算法标签】

《洛谷 P14917 数字移动》 #二分# #GESP# #2025#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=100005;intn,a[N],maxn;// n: 数组元素个数, a: 存储数组, maxn: 最大值(代码中未使用)// 检查函数:验证是否能在限制x下使数组满足配对条件boolcheck(intx){intt=0;// 临时变量,用于记录当前等待配对的数字// 遍历数组中的每个元素for(inti=1;i<=n;i++){// 如果当前元素小于等于x,可以忽略if(a[i]<=x)continue;// 处理大于x的元素if(!t)// 如果t为0,表示没有等待配对的数字t=a[i];// 将当前数字设为需要配对的数字elseif(a[i]!=t)// 如果当前数字与等待配对的数字不同return0;// 无法满足条件,返回falseelse// 如果当前数字与等待配对的数字相同t=0;// 配对成功,重置t为0}// 如果最后t为0,说明所有大于x的数字都成功配对return1;}intmain(){cin>>n;// 输入数组长度// 读取数组元素for(inti=1;i<=n;i++)cin>>a[i];intl=1,r=100000;// 二分查找的左右边界,r设为最大值100000// 二分查找最小的xwhile(l<r){intmid=(l+r)/2;// 取中间值if(check(mid))// 如果mid满足条件r=mid;// 尝试更小的x,右边界缩小到midelsel=mid+1;// 否则需要更大的x,左边界增加到mid+1}cout<<l<<endl;// 输出最小满足条件的xreturn0;}

【运行结果】

6 1 2 1 3 2 3 2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 23:13:36

基于HeyGem的AI数字人视频生成技术详解:支持批量处理与单个模式

基于HeyGem的AI数字人视频生成技术详解 在企业宣传、在线教育和智能客服日益依赖虚拟形象的今天&#xff0c;如何快速、低成本地制作高质量数字人视频&#xff0c;成为许多团队面临的核心挑战。传统方式往往需要专业动画师逐帧调整口型&#xff0c;耗时动辄数小时&#xff0c;且…

作者头像 李华
网站建设 2026/5/1 11:00:51

WEBM谷歌生态适配:HeyGem兼容YouTube常用格式

WEBM谷歌生态适配&#xff1a;HeyGem兼容YouTube常用格式 在短视频内容爆炸式增长的今天&#xff0c;越来越多的内容创作者开始借助AI技术批量生成讲解视频、虚拟主播或在线课程。而当这些内容最终要上传至YouTube时&#xff0c;一个看似不起眼却极为关键的问题浮出水面&#x…

作者头像 李华
网站建设 2026/5/2 18:01:09

Adobe Premiere Pro剪辑HeyGem输出视频终极指南

Adobe Premiere Pro剪辑HeyGem输出视频终极指南 在内容创作日益追求效率与个性化的今天&#xff0c;如何快速生成高质量的讲解类视频&#xff0c;成为教育、电商、企业培训等领域共同面临的挑战。传统的真人出镜拍摄不仅成本高、周期长&#xff0c;还受限于人员档期和场地条件。…

作者头像 李华
网站建设 2026/5/6 4:32:26

Final Cut Pro调色技巧:提升HeyGem生成画面质感

Final Cut Pro调色技巧&#xff1a;提升HeyGem生成画面质感 在AI视频内容爆发式增长的今天&#xff0c;数字人已不再是未来概念&#xff0c;而是企业宣传、在线教育和短视频运营中的日常工具。像HeyGem这样的AI口型同步系统&#xff0c;能够将一段音频快速转化为自然流畅的数字…

作者头像 李华
网站建设 2026/5/23 10:15:55

无法连接到服务器:连接被拒绝

文章目录环境症状问题原因解决方案环境 系统平台&#xff1a;N/A 版本&#xff1a;4.3.4,4.7.5,5.6.1 症状 连接数据库提示&#xff1a;无法连接到服务器&#xff1a;连接被拒绝。 问题原因 如果出现此问题&#xff0c;有一下几种可能的原因&#xff1a; 1.服务器没有运行…

作者头像 李华
网站建设 2026/5/11 0:24:33

韩国电信诈骗“无过错赔偿”制度的立法逻辑与技术应对路径

摘要近年来&#xff0c;语音钓鱼&#xff08;Voice Phishing&#xff09;等电信诈骗在韩国呈高发态势&#xff0c;传统以用户责任为核心的电子金融交易责任框架已难以有效保护普通消费者权益。2025年底&#xff0c;韩国执政党与政府联合推动“无过错赔偿”制度立法&#xff0c;…

作者头像 李华