news 2026/4/23 16:00:49

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/4/8 22:26:26

技术日报|Python ETL框架Pathway日增1219星登顶GitHub

&#x1f31f; TrendForge 每日精选 - 发现最具潜力的开源项目 &#x1f4ca; 今日共收录 8 个热门项目&#xff0c;涵盖 49 种编程语言&#x1f310; 智能中文翻译版 - 项目描述已自动翻译&#xff0c;便于理解&#x1f3c6; 今日最热项目 Top 10 &#x1f947; pathwaycom/pa…

作者头像 李华
网站建设 2026/4/23 8:21:50

你还在手动声明字段?C# 12主构造函数参数让代码瘦身80%

第一章&#xff1a;C# 12主构造函数参数的革命性意义C# 12 引入的主构造函数参数&#xff08;Primary Constructor Parameters&#xff09;极大地简化了类和结构体的初始化逻辑&#xff0c;标志着 C# 在语法简洁性和表达能力上的又一次飞跃。这一特性允许开发者在类声明级别直接…

作者头像 李华
网站建设 2026/4/23 8:20:20

C# 12部署效率翻倍秘诀:你不可不知的7种高级用法

第一章&#xff1a;C# 12顶级语句概述C# 12 引入了更简洁的编程入口方式——顶级语句&#xff08;Top-Level Statements&#xff09;&#xff0c;允许开发者在不编写显式类和方法结构的情况下直接编写可执行代码。这一特性简化了程序启动逻辑&#xff0c;特别适用于小型应用、脚…

作者头像 李华
网站建设 2026/4/23 8:15:39

CPU也能跑?但建议配备NVIDIA显卡以获得流畅体验

CPU也能跑&#xff1f;但建议配备NVIDIA显卡以获得流畅体验 在内容创作领域&#xff0c;数字人视频正以前所未有的速度渗透进直播、教育、客服等场景。一个能“开口说话”的虚拟形象&#xff0c;背后依赖的是一整套复杂的AI流水线&#xff1a;从语音解析到面部动画生成&#xf…

作者头像 李华
网站建设 2026/4/23 8:17:30

上一页◀ 下一页▶:分页浏览上百条生成记录也不卡顿

上一页◀ 下一页▶&#xff1a;分页浏览上百条生成记录也不卡顿 在数字人视频批量生成的场景中&#xff0c;用户动辄产出数百个视频文件。试想一下&#xff1a;你刚完成一轮自动化播报视频的合成任务&#xff0c;满怀期待地点开“历史记录”页面&#xff0c;结果浏览器卡住、转…

作者头像 李华
网站建设 2026/4/23 11:21:01

跨国电信诈骗犯罪模式与技术反制路径研究——以柬埔寨基地的SpaceX投资骗局为例

摘要近年来&#xff0c;以东南亚国家为据点、针对特定国家公民实施的跨国电信诈骗案件呈显著上升趋势。本文以2025年底韩国警方破获的一起以柬埔寨为基地、冒用SpaceX名义实施虚假非上市股票投资诈骗的案件为切入点&#xff0c;系统分析此类犯罪的操作机制、组织结构、技术手段…

作者头像 李华