之前无聊时还想到过这个东西,没想到多校就出出来了。。
结论是面积最大时正好是圆的内接四边形,证明网上可以找到。。
1 #include <stdio.h> 2 #include <math.h> 3 #include <algorithm> 4 double l[4]; 5 int cas; 6 double hl(){ 7 double p=(l[0]+l[1]+l[2]+l[3]) / 2; 8 return sqrt((p-l[0])*(p-l[1])*(p-l[2])*(p-l[3])); 9 } 10 int main(){ 11 scanf("%d", &cas); 12 for (int ca = 1; ca <= cas; ca++) { 13 scanf("%lf%lf%lf%lf", &l[0], &l[1], &l[2], &l[3]); 14 std::sort(l, l+4); 15 if(l[3] >= l[0]+l[1]+l[2])printf("Case %d: -1\n", ca); 16 else printf("Case %d: %.6f\n", ca , hl()); 17 } 18 return 0; 19 }