【牛客小白月赛21】NC201604 Audio 题目链接

题目大意:

给出三点 ,求到三点距离相等的点 的坐标。

解析

考点:计算几何基础。

初中蒟蒻表示不会什么法向量、高斯消元。。qwq

方法一:

根据两点间距离公式:

由D到A,B距离相等得(任选两点即可)

两边同时去根号,消去X2,Y2得

由D到A,C距离相等得

代入Y,得

为了代码美观,防止出错,我们用A1,B1,C1等表示上面的系数和常数项

A1=2*(x2-x1),B1=2*(y2-y1),C1=x2*x2+y2*y2-x1*x1-y1*y1;
A2=2*(x3-x1),B2=2*(y3-y1),C2=x3*x3+y3*y3-x1*x1-y1*y1;

即可解得X

#include<cstdio>
using namespace std;
int main(){
double x1,x2,x3,y1,y2,y3,X,Y;
double A1,B1,C1,A2,B2,C2;
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3); A1=2*(x2-x1),B1=2*(y2-y1),C1=x2*x2+y2*y2-x1*x1-y1*y1;
A2=2*(x3-x1),B2=2*(y3-y1),C2=x3*x3+y3*y3-x1*x1-y1*y1; X=(C2-B2*C1/B1)/(A2-B2*A1/B1);
Y=(C1-A1*X)/B1; printf("%.3lf %.3lf",X,Y);
}

方法二:

由平方反比定律,发现响度相同时只与距离有关,所以我们只需要求一点,使得该点到三角形三个顶点距离相同,即求三角形的外心(三边中垂线交点)。

线段中垂线解析式公式

推导:

给定一线段y=kx+b(一端坐标为(x1,y1),另一端坐标为(x2,y2)),求其垂直平分线的函数解析式
设其中垂线为f=k1x+c
∵f⊥y
∴k1*k=-1,即k1=-1/k(注:若两直线互相垂直,则k1*k2=-1)
∴f=-1/k*x+c,即f=-x/k+c; 把点((x1+x2)/2,(y1+y2)/2)代入f=-x/k+c中
得(y1+y2)/2=-((x1+x2)/2)/k+c
化简得c=(y1+y2)/2+(x1+x2)/2k ∴f=-x/k+c代入c即得
f=-x/k+(x1+x2)/2k+(y1+y2)/2 代入k=(y1-y2)/(x1-x2)即得中垂线解析式
(设经过(x1,y1),(x2,y2)两点的解析式为y=kx+b,则由y1=kx1+b,y2=kx2+b两式相减可得k)

联立任意两边的垂直平分线,求垂直平分线的交点即可。

#include<cstdio>
using namespace std;
int main(){
double x1,x2,x3,y1,y2,y3,X,Y,k;
double k1,b1,k2,b2;//两中垂线解析式中的k,b
scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3); k=(y1-y2)/(x1-x2);
k1=-1/k,b1=(x1+x2)/2/k+(y1+y2)/2; k=(y1-y3)/(x1-x3);
k2=-1/k,b2=(x1+x3)/2/k+(y1+y3)/2;//求两中垂线解析式 X=(b2-b1)/(k1-k2);
Y=k1*X+b1;//联立两中垂线解析式求交点
printf("%.3lf %.3lf",X,Y);
}

【牛客小白月赛21】NC201604 Audio的更多相关文章

  1. 【牛客小白月赛21】NC201605 Bits

    [牛客小白月赛21]NC201605 Bits 题目链接 题目描述 Nancy喜欢做游戏! 汉诺塔是一个神奇的游戏,神奇在哪里呢? 给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子. 如果盘子数 ...

  2. 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花

    求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...

  3. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  4. 牛客小白月赛8 - E - 诡异数字 数位DP

    牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...

  5. 牛客小白月赛18 Forsaken给学生分组

    牛客小白月赛18 Forsaken给学生分组 Forsaken给学生分组 链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 ​ Forsaken有 ...

  6. 牛客小白月赛18 Forsaken喜欢数论

    牛客小白月赛18 Forsaken喜欢数论 题目传送门直接点标题 ​ Forsaken有一个有趣的数论函数.对于任意一个数xxx,f(x)f(x)f(x)会返回xxx的最小质因子.如果这个数没有最小质 ...

  7. 牛客小白月赛19 E 「火」烈火燎原 (思维,树)

    牛客小白月赛19 E 「火」烈火燎原 (思维,树) 链接:https://ac.nowcoder.com/acm/contest/2272/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空 ...

  8. 牛客小白月赛16 小石的妹子 二分 or 线段树

    牛客小白月赛16 这个题目我AC之后看了一下别人的题解,基本上都是线段树,不过二分也可以. 这个题目很自然就肯定要对其中一个进行排序,排完序之后再处理另外一边,另一边记得离散化. 怎么处理呢,你仔细想 ...

  9. 牛客网 牛客小白月赛1 J.おみやげをまらいました

    J.おみやげをまらいました   链接:https://www.nowcoder.com/acm/contest/85/J来源:牛客网     随便写写.   代码: 1 #include<ios ...

随机推荐

  1. Vue中data元素之间相互赋值的陷阱

    今天在整理代码时,遇到这样的一个场景,下面将结合示例说明: (一)在Vue文件中定义一个const常量,如下图所示: (二)在data中有三个元素是这样赋值的,如下图所示: (三)在created() ...

  2. HTTP协议、时间戳、防盗链的一些概念

    HTTP协议 什么是HTTP协议 (HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一 ...

  3. Net Core使用Lucene.Net和盘古分词器 实现全文检索

    Lucene.net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎, ...

  4. JavaScript-跨浏览器事件处理程序(EventUtil)

    事件操作对象: var EventUtil= { //添加事件 addHandler: function (element, type, handler) { if (element.addEvent ...

  5. PAT (Advanced Level) Practice 1011 World Cup Betting (20 分) (找最值)

    With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...

  6. RSA学习档案

    RSA 学习档案 基本原理 随机选择两个质数p,q模数n=p*qφ(n)=(p−1)(q−1)选择加密指数e: 1 < e < φ(n)计算机密指数d: e*d % φ(n) = 1c = ...

  7. python 集合运算交集&并集&差集

    差集>>> #两个列表的差集3 >>> ret3 = list(set(a) ^ set(b)) #两个列表的差集 >>> ret4=list(s ...

  8. Django内置的中间件

    内置中间件 1. django.middleware.gzip.GZipMiddleware:相应数据进行压缩.如果内容长度少于200个长度,那么就不会压缩. 在settings.py文件中配置MID ...

  9. 深入浅出Mybatis系列一-Mybatis入门

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 最近两年 springmvc + mybatis 的在这种搭配还是蛮火的,楼主我呢, ...

  10. JavaScript实现常见的数据结构

    使用JavaScript实现栈.队列.链表.集合等常见数据结构.可能会有点用? 水 栈(Stack) 实际上JavaScript的Array本身就具有栈和队列的特性,所以我们可以借助Array来实现它 ...