HDU 5135(再思考)

Posted tiberius

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5135(再思考)相关的知识,希望对你有一定的参考价值。

题意略。

思路:再思考后发现,为了构造出最大的三角形面积和,我们应该尽量让长的棍子相组合,这样构造出的三角形面积和最大,贪心能解。

#include<bits/stdc++.h>
using namespace std;

double store[15];
int n;

double cal(double a,double b,double c){
    double p = (a + b + c) / 2;
    return sqrt(p * (p - a) * (p - b) * (p - c));
}
bool judge(double a,double b,double c){
    return (fabs(a - b) < c && c < a + b);
}

int main(){
    while(scanf("%d",&n) == 1 && n){
        for(int i = 0;i < n;++i){
            scanf("%lf",&store[i]);
        }
        sort(store,store + n);
        double ans = 0;
        for(int i = n - 1;i >= 2;){
            double a = store[i],b = store[i - 1],
            c = store[i - 2];
            if(judge(a,b,c)){
                ans += cal(a,b,c);
                i -= 3;
            }
            else{
                --i;
            }
        }
        printf("%.2lf
",ans);
    }
    return 0;
} 

 

以上是关于HDU 5135(再思考)的主要内容,如果未能解决你的问题,请参考以下文章

HDU5135 dfs搜索 枚举种数

hdu 5135

hdu-5127------hdu5137

hdu 3339(最短路+01背包)

LA5135 Mining Your Own Business

HDU2072回文串