题解 SP2716 【QUADAREA - Maximal Quadrilateral Area】
题意与HDU4386差不多,就是给定四边形四条边,求这样的四边形面积最大是多少。
显然可以证明面积
具体证明过程可以见下图(来源:上海中学数学2010年第三期45页,作者徐峰):
有了公式,代码也就很简单了:
#include<bits/stdc++.h>
using namespace std;
namespace FAST_IO
{
template<typename T> void read(T &a)
{
a=0;
int f=1;
char c=getchar();
while(!isdigit(c))
{
if(c=='-')
{
f=-1;
}
c=getchar();
}
while(isdigit(c))
{
a=a*10+c-'0';
c=getchar();
}
a=a*f;
}
template <typename T> void write(T a)
{
if(a<0)
{
a=-a;
putchar('-');
}
if(a>9)
{
write(a/10);
}
putchar(a%10+'0');
}
template <typename T> void writeln(T a)
{
write(a);
puts("");
}
}
int main()
{
int t;//多组数据
double a,b,c,d;
cin>>t;
while(t--)
{
cin>>a>>b>>c>>d;
double p=(a+b+c+d)/2;
printf("%.2lf\n", sqrt((p-a)*(p-b)*(p-c)*(p-d)));
}
}