蓝桥杯 1.最小化战斗力差距 贪心

88 阅读1分钟

1.最小化战斗力差距 - 蓝桥云课 (lanqiao.cn)

贪心

先看一下样例:

image.png

1划分到a队,2,3划分到右队,1是a队的最大值,2是b队的最小值。

max_b[min]-max_a[max]=2-1=1。

image.png

code

我们用一个变量res来存我们的结构,因为题目要求求的是最小值,所以这个变量不能初始化为0,应该初始化为一个较大值。

#include <iostream>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int main()
{
  int n=0;cin>>n;

  
  for(int i=1;i<=n;i++)cin>>a[i];
   //首先排个序,让小的在左边,大的在右边
   sort(a+1,a+1+n);

   int res=a[2]-a[1]; //初始化答案,因为最少要有两个队员,a队一个,b队一个
   for(int i=1;i<n;i++)
   {
       res=min(res,a[i+1]-a[i]);  //排完序a[i+1]就一定比a[i]大
   }

   cout<<res<<endl;
  return 0;
}