分析
先排序,然后瞎想一下就可以知道,最优的情况应该是把这个数列变成单调递增且相邻差值最小。
模拟每一天,判断两个花之间的关系,累加数量。
上代码
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[40001],ans;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a,a+n+1);
for(int i=1;i<=n;i++)
{
if(a[i]==a[i-1]&&i!=1)
{
a[i]=a[i-1]+1;
ans++;
}
else if(a[i]<a[i-1])
{
ans+=(1+a[i-1]-a[i]);
a[i]=a[i-1]+1;
}
}
cout<<ans;
return 0;
}