题目
给你一个长度为N的序列,每次可以让整个序列减去最小值而生成新的最小值。
要求:最大化最小值。
题解思路
因为是让整个序列减去的同一个值,所以大小关系不变。我们直接排序,然后从最小的开始一直往前减并且更新答案就行了。
这种题目知道怎么写但是没写出来。真的无语。
最近是真的菜的离谱。
AC代码
#include <bits/stdc++.h>
//#include <unordered_map>
#define PII pair<int,int>
#define ll long long
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 200100 ;
ll a[N] ;
int main()
{
ios::sync_with_stdio(false);cin.tie(0);
int T ;
cin >> T ;
while( T-- )
{
int n ;
cin >> n ;
for (int i = 1 ; i <= n ; i++ )
cin >> a[i] ;
if ( n == 1 )
cout << a[1] << "\n" ;
else
{
sort(a+1,a+1+n) ;
ll ans = a[1] ;
ll cnt = a[1] ;
for (int i = 2 ; i <= n ; i++ )
{
ans = max(a[i] - cnt , ans ) ;
cnt += a[i] - cnt ;
}
cout << ans << "\n" ;
}
}
return 0 ;
}