UVa 10697 - Firemen barracks
题目:已知三点。求到三点距离同样的点。
分析:计算几何。分三类情况讨论:
1.三点共线,不成立。
2.多点重叠,有多组解。
3.是三角形,输出中点。
说明:注意绝对值小于0.05的按0计算;负数的四舍五入与正数不同,-0.05的%.1lf输出是 -0.0。
#include <stdio.h>
#include <stdlib.h>
#include <math.h> double dist( double x0, double y0, double x1, double y1 )
{
return sqrt((x1-x0)*(x1-x0)+(y1-y0)*(y1-y0));
} double deal( double x )
{
double esp = 1e-6;
if ( x + esp < 0.05 && x - esp > -0.05 )
return 0.0;
else if ( x < 0.0 )
return x - esp;
else return x; } void calc( double x0, double y0, double x1, double y1, double x2, double y2 )
{
double a = dist( x0, y0, x1, y1 );
double b = dist( x0, y0, x2, y2 );
double c = dist( x2, y2, x1, y1 );
if ( x0 == x1 && y1 == y0 || x0 == x2 && y2 == y0 || x2 == x1 && y1 == y2 ) {
printf("There is an infinity of possible locations.\n");
return;
}
if ( fabs(a-b-c) < 1e-9 || fabs(b-a-c) < 1e-9 || fabs(c-a-b) < 1e-9 ) {
printf("There is no possible location.\n");
return;
}
double A1 = x1-x0,B1 = y1-y0,C1 = x1*x1-x0*x0+y1*y1-y0*y0;
double A2 = x2-x0,B2 = y2-y0,C2 = x2*x2-x0*x0+y2*y2-y0*y0;
double X = (B1*C2-B2*C1)/(A1*B2-A2*B1)/-2.0;
double Y = (A2*C1-A1*C2)/(A1*B2-A2*B1)/-2.0;
printf("The equidistant location is (%.1lf, %.1lf).\n",deal(X),deal(Y));
} int main()
{
int n;
double x1,x2,x3,y1,y2,y3;
while ( ~scanf("%d",&n) )
while ( n -- ) {
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
calc( x1, y1, x2, y2, x3, y3 );
}
return 0;
}
UVa 10697 - Firemen barracks的更多相关文章
- 一位学长的ACM总结(感触颇深)
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) AC ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
- UVA - 1625 Color Length[序列DP 代价计算技巧]
UVA - 1625 Color Length 白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束 和模拟赛那道环形DP很想,计算这 ...
- UVA - 10375 Choose and divide[唯一分解定理]
UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
随机推荐
- Mongodb对数据库(DB)的常用操作
1.查看所有库 show dbs 2.切换数据库/新建数据库 use mydb 3.查看当前库 db 需要注意的是:<use 新库>这个命令并不会马上建立真正的实体库,只有往里面插入数据的 ...
- 在CLion项目中指定不同版本的链接库
在项目中, 需要使用到libevent-2.1.x, 但是Ubuntu16.04自带的libevent版本为2.0.5, 需要另外编译安装新版的libevent, 安装过程很简单 -stable.ta ...
- USACO holstein AC code
/* ID:kevin_s1 PROG:holstein LANG:C++ */ #include <iostream> #include <cstdio> #include ...
- JDBC连接方式有哪几种
2011-05-10 目前比较常见的JDBC驱动程序可分为以下四个种类: (1)JDBC-ODBC桥加ODBC驱动程序 JavaSoft桥产品利用ODBC驱动程序提供JDBC访问.注意,必须将OD ...
- Swift与C类型对应关系表
每一个 C 语言基本类型, Swift 都提供了与之对应的类型. 在 Swift 中调用 C 方法的时候,会用到这些类型: C 类型 Swift 对应类型 别名 bool CBool Bool cha ...
- e藏在哪里?
e约等于2.718,是和pi齐名的自然常数. 在任何一个均匀随机器中,都藏着e. import random def count(): k = 0 s = 0 while s < 1: k += ...
- Java交替打印两个字符串
一.使用volatile关键字 public class Main { volatile int x = 0; Main() { new Thread(() -> { while (x < ...
- maven中跳过单元测试
Maven 提供了跳过单元测试的能力,只需要使用 Surefire 插件的 skip 参数. 在命令行,只要简单的给任何目标添加 maven.test.skip 属性就能跳过测试: $ mvn ins ...
- iphone3g 蜂窝数据有效设置
iphone3g 蜂窝数据有效设置 蜂窝数据 APN cmnet/空 用户名 空 A密码 空彩信(默认为空,需要控制的话,可以设置) APN cmwap/空 用 ...
- HDU 1710 Binary Tree Traversals (二叉树遍历)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...