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 二. 算法: 输入三个边长,套用海伦公式计算面积,并输出. 可以先判断是否可以构成三角形,即任意两边之 ...
随机推荐
- Android 华为推送库下载不了
问题:华为库下载不了,导致gradle同步失败 解决: 去掉华为推送在线下载相关代码,将在线下载修改为离线加载aar库 1.通过Maven 仓库离线包下载地址下载关于推送的包: http://deve ...
- 关于sarima模型的描述,时间序列的理论与方法(第二版)(美 布洛克威尔)有一部分比较值得看
- 去重sort|uniq -d
#!/bin/bash ############################################################### #Author :Bing # #Create ...
- ehcache配置文件
ehcache.xml: <?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi=& ...
- 【转载】使用阿里云code和git管理项目
使用代码云托管和git来管理项目可以使多客户端和多人开发更加高效.通过对比github,bitbucket和国内一些云托管服务发现阿里云在项目空间和传输速度及稳定性上更能满足公司开发的要求.本文将介绍 ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)E(多重集维护)
#define HAVE_STRUCT_TIMESPEC#include<bits/stdc++.h>using namespace std;long long ans[1000007]; ...
- 三、linux基础-常用命令man_cd_|_find_ln_>_history
3通用命令3.1 man命令man pwd 来查看该命令的全部帮助手册备注:命令最终是在内核中执行的,但是内核并无法直接识别,所以先通过shell执行,然后再交给内核执行3.2 cd 命令c ...
- Linux centos7 VMware Apache访问日志不记录静态文件、访问日志切割、静态元素过期时间
一.Apache访问日志不记录静态文件 网站大多元素为静态文件,如图片.css.js等,这些元素可以不用记录 vim /usr/local/apache2.4/conf/extra/httpd-vho ...
- vue基础语法摘要
1. 2. 3. 4. 5. 6. 7.“动态路由”和“编程式路由”参数的接收方式:路由的参数-----页面之间跳转的参数
- SSM 返回静态页面HTML Controller 被递归调用引起的StackOverflowError
一 背景 最近在做工程实践,想实现这么一个效果: 前端url请求地址:localhost:8080/idevtools/search 后端返回一个静态页面HTML:search.html 按照网上说的 ...