不得不说,又是没读懂题意,看了解题报告才知道,大意是有n条链子,每条链子上有L个环,一分钟内可以从一条链子上拆下一个环,然后把连接起两条链子,问最小的时间把这些链子连成一条链子。拆最短的链子,从最长的开始连。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
//freopen("in.txt","r",stdin);
int n,a[110],ans=0;
cin>>n;
for(int i=0; i<n; i++)
cin>>a[i];
sort(a,a+n);
for(int i=0; i<n; i++)
{
if(i>0) a[i]+=a[i-1];
if(a[i]==n-1-i-1)
{
ans=n-1-i-1;
break;
}
else if(a[i]>=n-1-i)
{
ans=n-i-1;
break;
}
}
cout<<ans<<endl;
return 0;
}