题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=115760#problem/G

  题目大意是给出四条边,问能否组成一个四边形,如果可以的话输出最大的四边形的面积,否则输出-1。

  判断能否组成四边形和三角形差不多,只要满足任意三条边大于第四条边即可。

  而对于计算面积,仓鼠学长给的方法是找两条边,然后二分它们的夹角找出最小的面积即可(因为四条边确定了,再确定一个夹角那么这个四边形的面积也就确定了)。然而还有更快的方法。

  根据四边形的海伦公式,S<=sqrt((p-a)*(p-b)*(p-c)*(p-d)),(p是四边形的半周长)。那么答案就很显然了- -。。(幻神这题秒过真是厉害。。)

  证明方法如下:

利用三角形的各种公式就可以证明出来了,要注意的是,S最大的条件是对角的和是180°。

  下面给出AC代码:

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string.h>
using namespace std;
int dp[][];
int num[];
int main()
{
int T;
scanf("%d",&T);
for(int i=;i<=T;i++)
{
printf("Case %d: ",i);
double a,b,c,d;
cin>>a>>b>>c>>d;
double p = (a+b+c+d)/;
if(p<=a||p<=b||p<=c||p<=d) puts("-1");
else printf("%f\n",sqrt((p-a)*(p-b)*(p-c)*(p-d)));
}
}

  另外,在这里再回顾一下三角形的海伦公式,有点区别:S=sqrt(p*(p-a)*(p-b)*(p-c)),(p同样是半周长)。

HDU 4386 Quadrilateral(四边形的海伦公式的应用)的更多相关文章

  1. HDU 4386 Quadrilateral(数学啊)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4386 Problem Description One day the little Jack is p ...

  2. HDU 4386

    http://acm.hdu.edu.cn/showproblem.php?pid=4386 题意:给四条边长,问能否组成四边形,如果能,求最大面积 求最大面积用海伦公式的四边形推广,p=(a+b+c ...

  3. HDU 2829 Lawrence(四边形优化DP O(n^2))

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 题目大意:有一段铁路有n个站,每个站可以往其他站运送粮草,现在要炸掉m条路使得粮草补给最小,粮草 ...

  4. 【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  5. hdu 2829 Lawrence(四边形不等式优化dp)

    T. E. Lawrence was a controversial figure during World War I. He was a British officer who served in ...

  6. hdu 3480 Division(四边形不等式优化)

    Problem Description Little D is really interested in the theorem of sets recently. There’s a problem ...

  7. HDU 3516 DP 四边形不等式优化 Tree Construction

    设d(i, j)为连通第i个点到第j个点的树的最小长度,则有状态转移方程: d(i, j) = min{ d(i, k) + d(k + 1, j) + p[k].y - p[j].y + p[k+1 ...

  8. hdu 2829(四边形优化 && 枚举最后一个放炸弹的地方)

    Lawrence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  9. HDU 3506 DP 四边形不等式优化 Monkey Party

    环形石子合并问题. 有一种方法是取模,而如果空间允许的话(或者滚动数组),可以把长度为n个换拓展成长为2n-1的直线. #include <iostream> #include <c ...

随机推荐

  1. PHP数字转大写

    最近在研究算法,发现了一个数字转大写的算法挺有意思,分享给大家看看: function get_amount($num){        $c1 = "零壹贰叁肆伍陆柒捌玖";   ...

  2. 生成 excel 插件 Epplus

    最近做 .net core 项目 发现一个新的 生成excel 的插件 . 以前值用 aspose 或者 npio. 简介:Epplus是一个使用Open Office XML(Xlsx)文件格式,能 ...

  3. Django-2.0 汉化

    1.语言 LANGUAGE_CODE = 'zh-hans' 2.时区 TIME_ZONE = 'Asia/Shanghai' 3.字段名汉化 models.CharFielf(verbose_nam ...

  4. 六、TreeMap的使用 及其源码解析

    TreeMap中的元素默认按照keys的自然排序排列 1. 构造函数TreeMap(): 创建一个空的TreeMap ,keys按照自然排序TreeMap(Comparator comparator) ...

  5. 一步一步教你实现iOS音频频谱动画(一)

    如果你想先看看最终效果再决定看不看文章 -> bilibili 示例代码下载 第二篇:一步一步教你实现iOS音频频谱动画(二) 基于篇幅考虑,本次教程分为两篇文章,本篇文章主要讲述音频播放和频谱 ...

  6. 从零开始配置一个简单的webpack打包

    一.基础配置 1.创建一个名为demo-webpack的文件夹(名称随意) 2.初始化一个package.json文件 //在cmd窗口中使用以下命令快速创建 npm init -y 3.安装webp ...

  7. windows环境安装haproxy及初步配置负载均衡使用示例

    安装HaProxy 首先需要下载windows环境下需要文件,这里下载的是一个别人编译好的一个文件,这里省去了编译的过程,使用的版本是haproxy-1.7.8. 下载后直接解压到对应的目录下.示例( ...

  8. django_redis

    目录 下载 说明 补充: 内存中设置值 取值 使用 配置: settings/dev.py缓存配置 - redis存储:依赖 django-redis,要安装>>>pip insta ...

  9. 浅析Java中的集合

    先了解一下集合与数组的区别:数组是java中存储基本数据类型.引用类型的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合只能存储引用类型的数据,长度可变,可在多数情况下使用. 集 ...

  10. mesos-master启动失败,报错Failed to load unknown flag 'quorum.rpmsave'

    [现象] mesos启动失败,查看mesos状态报错: [root@hps102 ~]# systemctl status mesos-master ● mesos-master.service - ...