PAT 乙级 1070结绳(25 分)
本题乍一看,我初步理解为最小生成树这种东西,但实际上 1 2 3 第一小和第二小的一半一定小于第三小,所以排序后重复累加,本人代码,也不能说原创,因为这题思路大概每个人都差不多!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int num,longs[20000];
scanf("%d",&num);
for(int i=0;i<num;i++)
{scanf("%d",&longs[i]);}
sort(longs,longs+num);
int changdu;
changdu=longs[0];
for(int j=1;j<num;j++)
{
changdu=(changdu+longs[j])/2.0;
}
cout<<changdu<<endl;
}