首页 > 代码库 > POJ 3253 Fence Repair

POJ 3253 Fence Repair

技术分享传送门:http://poj.org/problem?id=3253

技术分享

技术分享

这是一个贪心问题。

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 using namespace std;
 6 
 7 const int MAXN=200005;
 8 long long a[MAXN];
 9 
10 long long solve(int N){
11     long long ans=0;
12 
13     while(N>0){
14         int min1=0,min2=1;
15 
16         if(a[min2]<a[min1])
17             swap(a[min1],a[min2]);
18 
19         for(int i=2;i<=N;i++){
20             if(a[i]<a[min2])
21                 swap(a[i],a[min2]);
22             if(a[min2]<a[min1])
23                 swap(a[min1],a[min2]);
24         }
25 
26         ans+=(a[min1]+a[min2]);
27         a[min1]+=a[min2];
28         swap(a[min2],a[N]);
29         N--;
30     }
31     return ans;
32 }
33 
34 int main(){
35     int N;
36     cin>>N;
37     for(int i=0;i<N;i++)
38         cin>>a[i];
39     cout<<solve(N-1)<<endl;
40 
41 }

 

POJ 3253 Fence Repair