[codeforces 1360B] Honest Coach 排序+找相邻差值最小的两个数

本文详细解析了Codeforces Round #644 (Div.3)中B题“Honest Coach”的解题思路。通过排序数组并找到相邻元素间最小差值,实现将数组分为两组的任务。附带AC代码示例。

Codeforces Round #644 (Div. 3)  参赛人数20688

[codeforces 1360B]    Honest Coach   排序+找相邻差值最小的两个数

总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

在线测评地址http://codeforces.com/contest/1360/problem/B

ProblemLangVerdictTimeMemory
B - Honest Coach GNU C++17Accepted31 ms200 KB

 样例模拟如下

5
3 1 2 6 4
排序
1 2 3 4 6
找相邻差值最小的两个数(1,2),(2,3),(3,4)均可
如找(1,2)可作如下分组
[2],[1,3,4,6]

6
2 1 3 2 4 3
排序
1 2 2 3 3 4
找相邻差值最小的两个数(2,2),(3,3)均可
如找(2,2)可作如下分组
[1,2],[2,3,3,4]

4
7 9 3 1
排序
1 3 7 9
找相邻差值最小的两个数(1,3),(7,9)均可
如找(1,3)可作如下分组
[3],[1,7,9]

2
1 1000
排序
1 1000
找相邻差值最小的两个数(1,1000)均可
如找(1,1000)可作如下分组
[1],[1000]

3
100 150 200
排序
100 150 200
找相邻差值最小的两个数(100,150),(150,200)均可
如找(100,150)可作如下分组
[150],[100,200]

AC代码如下

#include <cstdio>
#include <algorithm>
using namespace std;
int a[60];
int main(){
	int t,n,i,delta;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(i=1;i<=n;i++)scanf("%d",&a[i]);
		sort(a+1,a+1+n);//自小到大排序
		delta=1010;//delta找相邻最小间距
		for(i=2;i<=n;i++)delta=min(a[i]-a[i-1],delta);
		printf("%d\n",delta);
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值