1298 圆与三角形
题目来源: HackerRank
基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题

 收藏
 关注

给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交。相交输出"Yes",否则输出"No"。(三角形的面积大于0)。

Input
第1行:一个数T,表示输入的测试数量(1 <= T <= 10000),之后每4行用来描述一组测试数据。
4-1:三个数,前两个数为圆心的坐标xc, yc,第3个数为圆的半径R。(-3000 <= xc, yc <= 3000, 1 <= R <= 3000)
4-2:2个数,三角形第1个点的坐标。
4-3:2个数,三角形第2个点的坐标。
4-4:2个数,三角形第3个点的坐标。(-3000 <= xi, yi <= 3000)
Output
共T行,对于每组输入数据,相交输出"Yes",否则输出"No"。
Input示例
2
0 0 10
10 0
15 0
15 5
0 0 10
0 0
5 0
5 5
Output示例
Yes
No

点和线段的关系大致可以有下面几

(海伦公式) 秦九韶公式(与海伦公式等价) 这俩公式自己百度去
在程序中主要使用秦九韶公式, 因为海伦公式在计算的时候中途可能会造成误差。(看不懂说明你没读懂题)
#include <iostream>
#include <string>
#include <cstring>
#include <stdio.h>
#include <cmath>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{int t;cin>>t;while(t--){double a[3],x[4],y[4];int i;for(i=0;i<3;i++) cin>>a[i];for(i=0;i<3;i++) cin>>x[i]>>y[i];double max1=0,max2=0,sum;double r=a[2];for(i=0;i<3;i++){sum=(x[i]-a[0])*(x[i]-a[0])+(y[i]-a[1])*(y[i]-a[1]);sum=sqrt(sum);if(sum>=a[2]) max1=1;if(sum<=a[2]) max2=1;//cout<<sum<<"   "<<a[2]<<' '<<max1<<' '<<max2<<endl;  <strong>//这个是用来判断点是在圆内还是外</strong>}int z=0;if(max1==1&&max2==1) z=1;else if(max1==1&&max2==0) //这一步证明三个点都在圆外{double a1,b1,c1;double s;for(i=0;i<3;i++){a1=(x[i]-a[0])*(x[i]-a[0])+(y[i]-a[1])*(y[i]-a[1]); <em>//计算点到圆心的距离,三条边构成三角形</em>b1=(x[(i+1)%3]-a[0])*(x[(i+1)%3]-a[0])+(y[(i+1)%3]-a[1])*(y[(i+1)%3]-a[1]);c1=(x[i]-x[(i+1)%3])*(x[i]-x[(i+1)%3])+(y[i]-y[(i+1)%3])*(y[i]-y[(i+1)%3]);if(a1+c1>=b1&&b1+c1>=a1) <strong>//判断是否能构成垂线</strong>{//cout<<a1<<' '<<b1<<' '<<c1<<endl;s=c1*a1-((c1+a1-b1)/2*(c1+a1-b1)/2);  //cout<<s<<endl;<strong> //我大中华的秦九韶公式</strong>if(sqrt(s/c1)<=a[2])   z=1; <strong>//找到垂线的长度。</strong>//cout<<i<<"     "<<sqrt(s/c1)<<' '<<z<<' '<<a[2]<<' '<<s-a[2]<<endl;}}}if(z) cout<<"Yes";else cout<<"No";//cout<<' '<<t;cout<<endl;}return 0;
}

51nod 1298 圆与三角形相关推荐

  1. 51Nod 1298 圆与三角形

    题目链接: 51Nod 1298 圆与三角形 题目描述: 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No". ...

  2. 51Nod 1298 圆与三角形相交 计算几何

    51Nod-1298-圆与三角形 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). ...

  3. 51nod 1298:圆与三角形(计算几何)

    题目链接 判断圆和三角形是否相交   可以转化为   判断三条线段是否和圆相交 #include<iostream> #include<cstdio> #include< ...

  4. (图论)51NOD 1298 圆与三角形

    给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). 输入 第1行:一个数T,表示输入 ...

  5. 51nod 1298 圆与三角形(几何知识)

    Description 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). Inpu ...

  6. 51nod 1298

    1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...

  7. 51Nod-1298 圆与三角形

    1298 圆与三角形 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三 ...

  8. 51Nod 圆与三角形

    给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于0). Input 第1行:一个数T,表 ...

  9. 51Nod - 1298(点到线段的距离)

    链接:51Nod - 1298 题意: 给出圆的圆心和半径,以及三角形的三个顶点,问圆同三角形是否相交.相交输出"Yes",否则输出"No".(三角形的面积大于 ...

最新文章

  1. 计算机服务器和数据库的关系,服务器到底是什么?和电脑又有什么区别?
  2. Webex 如何在在线会议领域保持优势?
  3. nltk.download(“stopwords“)
  4. Python Ctypes结构体指针处理(函数参数,函数返回)
  5. python prettytable_让python的print变得更好看——prettytable和colorama
  6. 95-290-360-源码-内存管理-Buffer-ByteBufferPool简介
  7. Conda 环境常用碎笔记
  8. MySQL5.7.19解压版配置
  9. Kotlin中正则表达式分析
  10. 用得上的商学课-老路
  11. TikTok广告投放必备指南
  12. Java并发57:Akka Actors并发框架浅谈及入门示例
  13. python 情感分析实例_基于Python的情感分析案例
  14. 关于使用selenium工具调用Firefox浏览器登录淘宝、京东web端的试验
  15. 悟空crm php 部署,悟空crm开源版本环境搭建
  16. #sora#笔记——工作流
  17. 如何批量增加视频的音量(ffmpeg)
  18. 全志 H6 Orange Pi Lite 2 Android 7.0 OTG配置
  19. Project 学习使用
  20. 正益移动:不仅仅送给你软件生产线

热门文章

  1. bing词典案例分析
  2. 这5种计算机视觉技术,刷新你的世界观
  3. 常用测试工具-----龙卷风
  4. ObjectARX2016 OPM面板全攻略
  5. 店盈通谈怎么提高店铺自然流量?
  6. Luogu P2524题解
  7. java argox_HTML+CSS3再加一点点JS做的一个小时钟
  8. [Untiy]贪吃蛇大作战(一)——开始界面
  9. CentOS7下使用rpm安装RabbitMQ
  10. matlab对遥感影像投影转换,在matlab中实现遥感影像和shp文件的结合显示