A7258 | [GESP202512 五级] 数字移动
来源2025
时间限制1s
内存限制512MB
通过 / 提交0/0
题目描述
小 A 有一个包含 $N$ 个正整数的序列 $A=\{A_1,A_2,\cdots,A_N\}$,序列 $A$ 恰好包含 $\frac{N}{2}$ 对不同的正整数。形式化地,对于任意 $1 \le i \le N$,存在唯一一个 $j$ 满足 $1\le j \le N, i\neq j, A_i=A_j$。
小 A 希望每对相同的数字在序列中相邻,为了实现这一目的,小 A 每次操作会选择任意 $i(1\le i\le N)$,将当前序列的第 $i$ 个数字移动到任意位置,并花费对应数字的体力。
例如,假设序列 $A=\{1,2,1,3,2,3\}$,小 A 可以选择 $i=2$,将 $A_2=2$ 移动到 $A_3=1$ 的后面,此时序列变为 $\{1,1,2,3,2,3\}$,耗费 $2$ 点体力。小 A 也可以选择 $i=3$,将 $A_3=1$ 移动到 $A_2=2$ 的前面,此时序列变为 $\{1,1,2,3,2,3\}$,花费 $1$ 点体力。
小 A 可以执行任意次操作,但他希望自己每次花费的体力尽可能小。小 A 希望你能帮他计算出一个最小的 $x$,使得他能够在每次花费的体力均不超过 $x$ 的情况下令每对相同的数字在序列中相邻。
小 A 希望每对相同的数字在序列中相邻,为了实现这一目的,小 A 每次操作会选择任意 $i(1\le i\le N)$,将当前序列的第 $i$ 个数字移动到任意位置,并花费对应数字的体力。
例如,假设序列 $A=\{1,2,1,3,2,3\}$,小 A 可以选择 $i=2$,将 $A_2=2$ 移动到 $A_3=1$ 的后面,此时序列变为 $\{1,1,2,3,2,3\}$,耗费 $2$ 点体力。小 A 也可以选择 $i=3$,将 $A_3=1$ 移动到 $A_2=2$ 的前面,此时序列变为 $\{1,1,2,3,2,3\}$,花费 $1$ 点体力。
小 A 可以执行任意次操作,但他希望自己每次花费的体力尽可能小。小 A 希望你能帮他计算出一个最小的 $x$,使得他能够在每次花费的体力均不超过 $x$ 的情况下令每对相同的数字在序列中相邻。
输入格式
第一行一个正整数 $N$,代表序列长度,保证 $N$ 为偶数。
第二行包含 $N$ 个正整数 $A_1,A_2,\ldots,A_N$,代表序列 $A$。且对于任意 $1\le i\le N$,存在唯一一个 $j$ 满足 $1\le j\le N,i\neq j,A_i=A_j$。
数据保证小 A 至少需要执行一次操作。
第二行包含 $N$ 个正整数 $A_1,A_2,\ldots,A_N$,代表序列 $A$。且对于任意 $1\le i\le N$,存在唯一一个 $j$ 满足 $1\le j\le N,i\neq j,A_i=A_j$。
数据保证小 A 至少需要执行一次操作。
输出格式
输出一行,代表满足要求的 $x$ 的最小值。
输入输出样例
输入 #1
6 1 2 1 3 2 3
输出 #1
2
数据范围
对于 $40\%$ 的测试点,保证 $1\le N,A_i\le 100$。
对于所有测试点,保证 $1\le N,A_i\le 10^5$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?