首页 > 代码库 > 哈夫曼树/贪心/POJ 3253 Fence Repair

哈夫曼树/贪心/POJ 3253 Fence Repair

 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<iostream> 5 using namespace std; 6 int n; 7 int a[20010]; 8 bool cmp(int x,int y) 9 {10     return x>y;11 }12 int main()13 {14     int n;15     scanf("%d",&n);16     for (int i=1;i<=n;i++) scanf("%d",&a[i]);17     long long ans=0;18     while (n>=2)19     {20         int min1=1,min2=2;21         if (a[min1]>a[min2]) swap(min1,min2);22         for (int i=3;i<=n;i++)23         {24             if (a[i]<a[min1])25             {26                 min2=min1;27                 min1=i;28             }29             else if (a[i]<a[min2]) min2=i;30         }31         int t=a[min1]+a[min2];32         ans+=t;33         if (min1==n) swap(min1,min2);34         a[min1]=t;35         a[min2]=a[n];36         n--;37     }38     printf("%lld\n",ans);39     return 0;40 }

 

哈夫曼树/贪心/POJ 3253 Fence Repair