A7467 | 午枫的传话游戏
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
班级里有 $n$ 位同学,小午给每位同学安排了一个数字,第 $i$ 位同学对应的数字为 $a_i$。现在有如下规则:
如果两位同学对应数字的绝对差值恰好为 $1$,那么他们之间就可以直接传话。如果两位同学不能直接传话,但可以通过其他同学间接传话,也认为他们能够互相交流。
小午希望最后任意两位同学之间都能够完成传话。现在他可以手动增加一些“可以直接传话”的关系。请你求出:最少还需要增加多少组关系,才能让所有同学之间都能够互相传话。
如果两位同学对应数字的绝对差值恰好为 $1$,那么他们之间就可以直接传话。如果两位同学不能直接传话,但可以通过其他同学间接传话,也认为他们能够互相交流。
小午希望最后任意两位同学之间都能够完成传话。现在他可以手动增加一些“可以直接传话”的关系。请你求出:最少还需要增加多少组关系,才能让所有同学之间都能够互相传话。
输入格式
第一行输入一个整数 $T$,表示测试数据组数。
对于每组测试数据:
第一行输入一个整数 $n$,表示同学人数。
第二行输入 $n$ 个整数 $a_i$,表示每位同学对应的数字。
对于每组测试数据:
第一行输入一个整数 $n$,表示同学人数。
第二行输入 $n$ 个整数 $a_i$,表示每位同学对应的数字。
输出格式
对于每组测试数据,输出一行一个整数,表示最少需要手动增加的关系数量。
输入输出样例
输入 #1
2 3 1 2 3 2 1 1
输出 #1
0 1
【样例解释】
样例 1 解释
对应数字分别为:
1 2 3因为:
- 数字 $1$ 和 $2$ 的差值为 $1$
- 数字 $2$ 和 $3$ 的差值为 $1$
所以所有同学之间已经能够互相传话,不需要再增加关系。
样例 2 解释
对应数字分别为:
1 1两人的数字差值为 $0$,无法直接传话。
因此至少需要手动增加 $1$ 组关系。
【数据范围】
对于 $100\%$ 的测试数据,满足:
$1 \le T \le 1000$
$1 \le n \le 2\times10^5$
$1 \le a_i \le 2\times10^5$
单个测试文件中所有 $n$ 的总和不超过 $2\times10^5$
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?