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

输入

第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)

输出

共T行,对于每组输入数据,相交输出"Yes",否则输出"No"。

输入样例

2
0 0 10
10 0
15 0
15 5
0 0 10
0 0
5 0
5 5

输出样例

Yes
No解:这道题本身不难,只要确定好分类讨论的角度就能ac。  我的想法就是通过求点到线段的距离来求解。
 1 #include <stdio.h>
 2 #define sq(a) ((a) * (a))
 3 int main()
 4 {
 5     int t;
 6     while (scanf_s("%d", &t) != EOF)
 7     {
 8         while (t--)
 9         {
10             long long cx, cy, cr[2], tx[3], ty[3], dis[3], flag = 0;
11             scanf_s("%lld%lld%lld%lld%lld%lld%lld%lld%lld", &cx, &cy, &cr[0], &tx[0], &ty[0], &tx[1], &ty[1], &tx[2], &ty[2]);
12             cr[1] = sq(cr[0]);
13             for (int i = 0; i < 3; ++i)
14             {
15                 dis[i] = sq(tx[i] - cx) + sq(ty[i] - cy);
16                 if (dis[i] > cr[1]) flag += 1;
17                 else if (dis[i] == cr[1])
18                 {
19                     flag = 1;
20                     break;
21                 }
22             }
23             if (3 == flag)
24             {
25                 flag = 0;
26                 for (int i = 0; i < 3; ++i)//判断点到线段的距离
27                 {
28                     if (sq(tx[i] - tx[(i + 1) % 3]) + sq(ty[i] - ty[(i + 1) % 3]) + dis[i] > dis[(i + 1) % 3]
29                         && sq(tx[i] - tx[(i + 1) % 3]) + sq(ty[i] - ty[(i + 1) % 3]) + dis[(i + 1) % 3] > dis[i])//余弦定理
30                         if (sq((ty[i] - ty[(i + 1) % 3])*cx + (tx[(i + 1) % 3] - tx[i])*cy + tx[i] * ty[(i + 1) % 3] - tx[(i + 1) % 3] * ty[i])
31                             <= (sq(ty[i] - ty[(i + 1) % 3]) + sq(tx[i] - tx[(i + 1) % 3]))*cr[1])//点到直线公式
32                         {
33                             flag = 1;
34                             break;
35                         }
36                 }
37
38             }
39             switch (flag)
40             {
41             case 0:
42                 printf("No\n");
43                 break;
44             case 1:case 2:
45                 printf("Yes\n");
46                 break;
47             }
48         }
49     }
50     return 0;
51 }

转载于:https://www.cnblogs.com/Ekalos-blog/p/10147011.html

(图论)51NOD 1298 圆与三角形相关推荐

  1. 51Nod 1298 圆与三角形

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

  2. 51nod 1298 圆与三角形

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

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

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

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

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

  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. Tiny6410之重定位代码到SDRAM
  3. java第三章_【Java】第三章 变量
  4. 将1bpp的bmp图像存储为1bpp或者2bpp的tiff格式
  5. sliverlight 开发FAQ
  6. C#设计模式之11-享元模式
  7. mysql 实现非递归树_二叉树的非递归前序,中序,后序遍历算法
  8. 数据库并发抢红包_秒杀场景实践之抢红包
  9. jq如何获取选中option的值_如何用jQuery获得select的值
  10. 当别人问你自定义哪些hooks
  11. 理解WebKit和Chromium: Content API和CEF3
  12. 如何利用Google谷歌浏览器来查看GET或POST请求以及传递的数据
  13. loadrunner监控linux内存,Loadrunner11监控LINUX服务器
  14. redis 应用场景
  15. 南京(选自 余秋雨《文化苦旅》)
  16. VRChat_SDK3_Avatar
  17. 【Linux内核】内存管理——内存回收机制
  18. python 日期大小比较
  19. android通讯录根据手机号码查询姓名
  20. 机器人瓦力材质库下载_瓦力2020材质库下载 3ds max瓦力材质库2020最新版(支持VR4.1+Gamma2.2) 下载-脚本之家...

热门文章

  1. html.actionlink 锚点,razor - 从@ Html.ActionLink MVC 4将参数传递给控制器
  2. 2021年淮南高考成绩查询,2021年淮南高考最高分多少分,历年淮南高考状元
  3. java miniui datagrid_miniui datagrid 的客户端分页解决方案
  4. diff git 指定时间_【GIT】从指定分支两个Tag中获取差异文件,进行代码的增量更新...
  5. 交换机虚拟化和堆叠的区别_交换机级联与堆叠有何区别
  6. php mysql异常捕获_PHP中try{}catch{}的用法及异常处理.对数据库的事物支持
  7. 使用遗传算法解决图着色问题
  8. java 字符串 字节数组_字符串到字节数组,字节数组到Java中的字符串
  9. 函数式编程和面向对象式编程_比较函数式编程,命令式编程和面向对象的编程
  10. 在字符串中找出第一个只出现一次的字符,Python实现