HDU 4709 Herding

来源:互联网 发布:painter中文版for mac 编辑:程序博客网 时间:2024/05/09 16:05

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4709

WA了无数后AC~~又是带血的AC。

这里要求最小面积,因为三角形的面积最小,因此我们一一找三个点求组成的三角形面积中的最小值即可,注意area2函数返回的值取绝对值才是面积值(就是这里一直WA)。

#include<cstdio>#include<iostream>#include<sstream>#include<cstdlib>#include<cstring>#include<string>#include<climits>#include<cmath>#include<algorithm>#include<queue>#include<vector>#include<stack>#include<set>#include<map>using namespace std;double a[105],b[105];double area2(double x0,double y0,double x1,double y1,double x2,double y2){    return x0*y1+x2*y0+x1*y2-x2*y1-x0*y2-x1*y0;}int main(){    int t;    scanf("%d",&t);    while(t--)    {        int n;        int i,j,k;        scanf("%d",&n);        for(i=0; i<n; i++)            scanf("%lf%lf",&a[i],&b[i]);        double s;        double min=0x3f3f3f3f;        for(i=0; i<n; i++)            for(j=i+1; j<n; j++)                for(k=j+1; k<n; k++)                {                    s=fabs(area2(a[i],b[i],a[j],b[j],a[k],b[k])/2);                    if(s<min&&s!=0)                        min=s;                }        if(min!=0x3f3f3f3f&&n>2)            printf("%.2f\n",min);        else            printf("Impossible\n");    }    return 0;}


1 0