【UVA】11524-InCircle(公式推导)

简直醉了。

1)对于一般的三角形,内切圆半径公式如下:

[(s-a)(s-b)(s-c)/s]^(1/2)

s=(a+b+c)/2

2)在直角三角形的内切圆中,有这样两个简便公式

1、两直角边相加的和减去斜边后除以2,得数是内切圆的半径:

r=(a+b-c)/2(注:s是Rt△的面积,a, b是Rt△的2个直角边,c是斜边)

2、两直角边乘积除以直角三角形周长,得数是内切圆的半径:

r=ab/ (a+b+c)

内切圆的半径公式:a,b,c为三角形三条边

s = (a + b + c) / 2;

r = sqrt( (s-a)*(s-b)*(s-c)/s);

这样的话,我们可以根据边之间比例,用一个边把另外2条边表示出来,之后带入内切圆的公式。

海伦公式求面积

Area = sqrt(s * (s - a) * (s - b) * (s - c));

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
using namespace std;
const double eps = 1e-10;
#define _PI acos(-1.0)
double m1,n1,m2,n2,m3,n3;
double t1,t2,t3,t4,t5,t6;
double r,b;
void init(){
    scanf("%lf",&r);
    scanf("%lf%lf%lf%lf%lf%lf",&m1,&n1,&m2,&n2,&m3,&n3);
    double t1 = n3 / (n3 + m3);
    double t2 = m1 / (n1 + m1);
    double t3 = m3 / (n3 + m3);
    double t4 = n2 / (n2 + m2);
    double k1 = t1 / t2;     // c = k1 * b
    double k2 = t3 / t4;     // a = k2 * b
    double  k = k1 + k2 + 1; // 周长 = a + b + c = (k1 + k2 + 1) * b;
    double _k = k / 2;
    double tt = (_k - k1)*(_k - k2)*(_k - 1);
    b = sqrt(r * r * _k / tt);
    double S = _k * b;
    double ans = sqrt(S * (S - k1 * b) * (S - b) * (S - k2 * b));
    printf("%.4f\n",ans);
}
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        init();
    }
    return 0;
}
时间: 2024-10-07 20:47:36

【UVA】11524-InCircle(公式推导)的相关文章

UVa 11524 - InCircle

题目:已知一个三角形内切圆的半径r,以及它分三条边的逆时针比例,求三角形面积. 分析:计算几何.利用面积公式联立等式计算即可,这三边为k*a,k*b,k*c. 根据内切圆计算面积S△ABC = r*k(a+b+c)/ 2: 根据海伦公式计算面积S△ABC = sqrt(p(p-a)(p-b)(p-c)) { 其中p = k (a+b+c)/ 2 }: 解出k,求出面积即可. 说明:╮(╯▽╰)╭. #include <algorithm> #include <iostream> #

几何基础专题

UVA 11437 Triangle Fun UVA 11800 Determine the Shape 四边形判定 UVA 11646 Athletics Track UVA 11817 Tunnelling the Earth 球面距离 UVA 1473 Dome of Circus UVA 11524 InCircle UVA 11731 Ex-circles 旁切圆 UVA 12300 Smallest Regular Polygon UVA 10566 Crossed Ladders

计算几何题目分类

转载 一.基础题目 1.1 有固定算法的题目 A, 最近点对问题最近点对问题的算法基于扫描线算法.ZOJ 2107    Quoit Design    典型最近点对问题POJ    3714    Raid    变种最近点对问题 B,最小包围圆最小包围圆的算法是一种增量算法,期望是O(n).ZOJ    1450    Minimal Circle  HDU    3007    Buried memory C,旋转卡壳POJ 3608    Bridge Across Islands   

训练日志2

这几天主要是在打比赛 计算几何写了一些推公式的题 UVALive 4413 相当于按比例 构造出一种小三角形 想求原来的大三角形 这道题用到了 梅涅劳斯定理 链接 简单来说就是一条过三角形三边所在直线的直线 有 AD * BE * CF = BD * CE * AF 证明也比较简单 应用到这题就是由三条直线和三个小三角形得到三个方程 解出来对应比例就可以了 POJ 2208 给你四面体六条边 求体积 欧拉四面体公式 链接 写的时候也并没有用公式 直接建系 也是可以算的 UVA 11524 给你一

UVA 562 Dividing coins --01背包的变形

01背包的变形. 先算出硬币面值的总和,然后此题变成求背包容量为V=sum/2时,能装的最多的硬币,然后将剩余的面值和它相减取一个绝对值就是最小的差值. 代码: #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define N 50007 int c[102],d

UVA 10341 Solve It

Problem F Solve It Input: standard input Output: standard output Time Limit: 1 second Memory Limit: 32 MB Solve the equation: p*e-x + q*sin(x) + r*cos(x) + s*tan(x) + t*x2 + u = 0 where 0 <= x <= 1. Input Input consists of multiple test cases and te

UVA 11014 - Make a Crystal(容斥原理)

UVA 11014 - Make a Crystal 题目链接 题意:给定一个NxNxN的正方体,求出最多能选几个整数点.使得随意两点PQ不会使PQO共线. 思路:利用容斥原理,设f(k)为点(x, y, z)三点都为k的倍数的点的个数(要扣掉一个原点O).那么全部点就是f(1),之后要去除掉共线的,就是扣掉f(2), f(3), f(5)..f(n).n为素数.由于这些素数中包括了合数的情况,而且这些点必定与f(1)除去这些点以外的点共线,所以扣掉.可是扣掉后会扣掉一些反复的.比方f(6)在f

[UVa] Palindromes(401)

UVA - 401 Palindromes Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDED

uva 401.Palindromes

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=342 题目意思:给出一段字符串(大写字母+数字组成).判断是否为回文串 or 镜像串 or 回文镜像串 or 什么都不是.每个字母的镜像表格如下 Character Reverse Character Reverse Character Reverse A A M M Y Y B