HihoCoder 1245:王胖浩与三角形 三角形边长与面积
#1245 : 王胖浩与三角形
- 样例输入
-
1
2 3 3 3 - 样例输出
-
5.8216152143
描述
王胖浩有一个三角形,三边长为a,b,c。他有特殊的能力,能增加三条边的边长,增加的总长度不能超过l。
他想通过合理地使用他的特殊能力,使得三角形的面积最大。
输入
第一行一个整数T,表示测试数据个数。
以下T行,每行一个四个整数a,b,c,l。
数据范围:
1<=T<=104, 1<=a,b,c<=106,
0<=l<=106
输出
输出T行,每行一个实数,表示三角形的面积。要求相对误差不能超过10-9。
已知三角形的三个边长a,b,c,其面积是sqrt((a+b+c)*(a+b-c)*(a+c-b)*(b+c-a))/4。
考虑面积公式sqrt((a+b+c)(a+b-c)(b+c-a)(a+c-b))/4,如果固定了a和b+c,那么b和c越接近越好。
所以将三条边排序,首先增加第一条边到和第二条边一样长,然后一起增加前两条边到和第三条边一样长,然后三条边一起增加。
代码:
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; double a[5], res, ll; int main()
{
//freopen("i.txt","r",stdin);
//freopen("o.txt","w",stdout); int test;
scanf("%d", &test); while (test--)
{
cin >> a[0] >> a[1] >> a[2] >> ll; sort(a, a + 3); if (ll <= a[1] - a[0])
{
a[0] = a[0] + ll;
}
else
{
ll = ll - (a[1] - a[0]);
a[0] = a[1];
if (ll/2 <= a[2] - a[1])
{
a[1] = a[1] + ll / 2;
a[0] = a[0] + ll / 2;
}
else
{
ll = ll - 2 * (a[2] - a[1]);
a[1] = a[2];
a[0] = a[2]; a[0] = a[0] + ll / 3;
a[1] = a[1] + ll / 3;
a[2] = a[2] + ll / 3;
}
}
res = sqrt((a[0] + a[1] + a[2])*(a[0] + a[1] - a[2])*(a[1] + a[2] - a[0])*(a[0] + a[2] - a[1])) / 4;
printf("%.10lf\n", res);
}
//system("pause");
return 0;
}
HihoCoder 1245:王胖浩与三角形 三角形边长与面积的更多相关文章
- hihoCoder #1246 : 王胖浩与环 (数学)
题意: 有一个环形序列,可以将其切成连续的k段子序列,那么gcd( 每段子序列的和 )就是优美程度.输出n个整数,表示当k=[1, n] 时的最大优美程度. 思路: 观察一下,当切成1段的时候,gcd ...
- hihoCoder #1246 王胖浩与环
题目大意 $n$($1\le n\le 2000$)个正整数 $a_1, a_2, \dots, a_n$($a_i\le 5\times 10^7$)分布在一个圆环上. 定义 $b_k$ 为:将环上 ...
- HihoCoder 1246:王胖浩与环
#1246 : 王胖浩与环 时间限制:6000ms 单点时限:1000ms 内存限制:256MB 描述 王胖浩有一个环,环上有n个正整数.他有特殊的能力,能将环切成k段,每段包含一个或者多个数字. 对 ...
- C语言:已知三角形三边长求面积
//已知三角形三边长求面积 #include <stdio.h> #include <math.h> int main() { float a,b,c,p,s; int x=0 ...
- python应用-已知三角形的边长求他的面积和周长
""" 已知三角形的边长求他的面积和周长 Author:罗万财 Date:2017-3-3 """ import math a=float( ...
- 大一C语言学习笔记(11)---编程篇--写一个程序,可以获取从键盘上输入的的三个数,并能够判断是否可以以这三个数字作为边长来构成一个三角形,如果可以的话,输出此三角形的周长及面积,要求 0 bug;
考核内容: 写一个程序,可以获取从键盘上输入的的三个数,并能够判断是否可以以这三个数字作为边长来构成一个三角形,如果可以的话,输出此三角形的周长及面积: 答案: #include<stdio.h ...
- 通过前台选择输入用来计算圆,三角形以及长方形的面积(此题目主要是while以及if 的使用)
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现计算圆面积,三角形面积,长方形面积'''flag=Truewhile flag: pi ...
- luogu 1355 神秘大三角 判断点和三角形的位置关系 面积法 叉积法
题目链接 题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样 ...
- 【C语言】已知三角形三边长,求三角形面积
一. 数学基础: 已知三角形的三边,计算三角形面积,需要用到海伦公式: 即p=(a+b+c)/2 二. 算法: 输入三个边长,套用海伦公式计算面积,并输出. 可以先判断是否可以构成三角形,即任意两边之 ...
随机推荐
- Docker 之registry私有仓库搭建
Docker 之registry私有仓库搭建 官方提供的私有仓库docker registry用法 https://yeasy.gitbooks.io/docker_practice/reposito ...
- DataTable和实体类之间的转换
using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.R ...
- 信息论相关概念:熵 交叉熵 KL散度 JS散度
目录 机器学习基础--信息论相关概念总结以及理解 1. 信息量(熵) 2. KL散度 3. 交叉熵 4. JS散度 机器学习基础--信息论相关概念总结以及理解 摘要: 熵(entropy).KL 散度 ...
- 每个 JavaScript 开发者都该懂的 Unicode
英文原文标题:what-every-javascript-developer-should-know-about-unicode (译者注:本文含有Unicode辅助平面的特殊字符,部分浏览器可能无法 ...
- Mysql 分组查询出现'this is incompatible with sql_mode=only_full_group_by'的解决办法
由于Mysql自动开启了 only_full_group_by,所以若查询的字段不在group by里面,则分组报错. 解决办法其一:mysql配置,关闭only_full_group_by,这种办法 ...
- teraterm中状态框statusbox
;Author : Bing ;Date : 1/17/2019;Usage: modify log drictory according to actual drictorylogfile=&quo ...
- Java基础 -5.2
方法重载 当方法名称相同,参数的类型或者个数不同的时候 就会称为方法重载. public static void main(String[] args) { System.out.println(ad ...
- JDK各个版本的新特性jdk1.5-jdk8(转)
原文:http://www.cnblogs.com/langtianya/p/3757993.html JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要 ...
- 「Luogu P2468 [SDOI2010]粟粟的书架」
这道题分为两个部分 Part1 前置芝士 前缀和(后缀和,二维前缀和):可以预处理一下数据. 二分查找:可以在较短的时间内找出答案. 具体做法 可以发现\(R,C\)不大,只有\(200\),于是可以 ...
- 一步一步配置docker(tomcat+jenkins+phpmyadmin+nginx)
经过半个月的docker学习实践,今天对自己的学习成果做个总结. 貌似官方推荐的是docker compose使用DockerFile 来配置,但目前还没学习使用docker compose,先学习通 ...