码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 5135(再思考)

时间:2018-06-11 02:15:31      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:组合   bit   ble   abs   ==   namespace   else   pre   span   

题意略。

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

#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\n",ans);
    }
    return 0;
} 

 

HDU 5135(再思考)

标签:组合   bit   ble   abs   ==   namespace   else   pre   span   

原文地址:https://www.cnblogs.com/tiberius/p/9165023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!