当前位置: 首页 > news >正文

《P14917 [GESP202512 五级] 数字移动》

题目背景

对应的选择、判断题:试题 - GESP 202512 C++ 五级 - 洛谷有题

题目描述

小 A 有一个包含 N 个正整数的序列 A={A1​,A2​,⋯,AN​},序列 A 恰好包含 2N​ 对不同的正整数。形式化地,对于任意 1≤i≤N,存在唯一一个 j 满足 1≤j≤N,i=j,Ai​=Aj​。

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

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

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

输入格式

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

第二行包含 N 个正整数 A1​,A2​,…,AN​,代表序列 A。且对于任意 1≤i≤N,存在唯一一个 j 满足 1≤j≤N,i=j,Ai​=Aj​。

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

输出格式

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

输入输出样例

输入 #1复制

6 1 2 1 3 2 3

输出 #1复制

2

说明/提示

对于 40% 的测试点,保证 1≤N,Ai​≤100。

对于所有测试点,保证 1≤N,Ai​≤105。

代码实现:

#include <bits/stdc++.h> using namespace std; bool check(int x, const vector<int>& A) { int n = A.size(); vector<int> last_pos; unordered_map<int, int> first_pos; unordered_map<int, int> count; unordered_map<int, vector<int>> positions; for (int i = 0; i < n; i++) { positions[A[i]].push_back(i); } for (auto& p : positions) { int val = p.first; if (val <= x) continue; auto& pos = p.second; if (pos.size() != 2) continue; for (int i = pos[0] + 1; i < pos[1]; i++) { if (A[i] > x) { return false; } } } return true; } int main() { ios::sync_with_stdio(false); cin.tie(0); int N; cin >> N; vector<int> A(N); int maxVal = 0; for (int i = 0; i < N; i++) { cin >> A[i]; maxVal = max(maxVal, A[i]); } int left = 1, right = maxVal, ans = maxVal; while (left <= right) { int mid = (left + right) / 2; if (check(mid, A)) { ans = mid; right = mid - 1; } else { left = mid + 1; } } cout << ans << "\n"; return 0; }
http://www.jsqmd.com/news/1197623/

相关文章:

  • 三个维度,三款图表工具
  • VMware Workstation Pro 26H1 安装与汉化教程(超详细图文版)
  • C++回溯算法详解:从决策树遍历到剪枝优化实战
  • linux系统移植篇(二)—— Uboot启动流程与关键命令实战解析
  • 2026湖南省GEO系统协作功能核验指南:岗位权限怎么设才靠谱? - 企智芯
  • 便携设备音频I/O接口IC设计与应用解析
  • 技术成长中数量积累如何抵消运气因素:从代码量到专家模式
  • Zephyr功耗管理实战:从zephyr-cn教程学习低功耗设计终极指南
  • 从Prompt到Agent:零基础AI学习路线与实战指南
  • 阿里云EMR StarRocks多模态混合检索实战:从原理到部署
  • 2026年7月最新亨得利官方服务项目及价格查询|全部网点地址电话权威信息通告 - 亨得利官方博客
  • Windows部署SeaTunnel Web保姆级指南:JDK17+MySQL8+Vue3全栈避坑实录
  • 【Linux】网络篇三--UDP编程实战:从sendto/recvfrom到可靠传输模拟
  • 【CubeMX+Keil】从零到一:STM32CubeMX配置与Keil MDK工程构建全流程解析
  • 电子设备自动关机故障分析与电路诊断
  • 宽压输入3.3V/2.6A Buck电路设计与优化
  • Linux系统下Matlab的图形化与静默安装:从桌面到服务器的部署实践
  • 杰理6905A芯片引脚的设置
  • Origin—构建可复用的线性拟合分析模板
  • SpeechAnalyzer API实战:苹果设备语音识别性能优化与对比
  • (2026最新)茂名防水补漏本地人必选的正规靠谱公司推荐-房屋漏水检测维修师傅上门-卫生间/厨房/阳台/房顶/外墙漏水检测精准测漏 - 即刻修防水
  • 免费分享几千款5000G游戏资源 安卓单机游戏 支持手机平板可用安卓游戏网盘下载
  • 3分钟上手HunterPie:让你的《怪物猎人:世界》狩猎体验全面升级
  • 用Claude Code为CP2K构建Windows智能安装包
  • 全网最全网络安全学习路线|零基础入门全套笔记整理
  • Product Hunt 每日热榜 | 2026-07-14
  • Claude Code基本操作
  • PrivaZer深度清理:彻底擦除Windows隐私数据与释放磁盘空间
  • README.md语法全解析:从入门到精通,打造专业项目文档
  • 2026下半年计算机二级C语言零基础通关备考方案