SP2716题解

题目描述

给定四个边,由这四个边构建四边形,求四边形最大面积。

输出与  std \ std\ 相差  0.01 \ 0.01\ 就算正确。


思路

海伦的三角形公式  S=(pa)(pb)(pc)\ S=\sqrt{(p-a)(p-b)(p-c)},其中  p=a+b+c2\ p=\frac{a+b+c}{2},这里面的  a,b,c \ a,b,c\ 分别为三条边的长。

可是这是三角形而不是四边形啊!

把它变成四边形版不就行了?

可是,四边形有很多种……

例如四条边长度都为  1\ 1,它的变化可以是:

还可能是:

那怎么办呢?

其实我们知道,圆内接四边形的面积是在边长固定的情况下面积最大的。

且我们知道圆内接四边形的面积为

S=(pa)(pb)(pc)(pd)S=\sqrt{(p-a)(p-b)(p-c)(p-d)}

其中  p=a+b+c+d2\ p=\frac{a+b+c+d}{2}

所以我们只需要套公式就行了。

代码奉上

#include<bits/stdc++.h>
int t;
double a,bc,d,sum,q;//一堆胡乱定义
int main(){
	cin>>t;
	for(int i=1;i<=t;i++){//t组数据
		cin>>a>>b>>c>>d;
		sum=(a+b+c+d)/2;//公式中的p
		q=sqrt((sum-a)*(sum-b)*(sum-c)*(sum-d));
		printf("%.2lf",q);//保留两位小数神器
	}
	return 0;//愉快地结束了主函数
}

总时间复杂度  O(t)\ \operatorname{O}(t),每次询问  O(1)\ \operatorname{O}(1)

posted @   Weslie_qwq  阅读(3)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示