题目链接:https://www.jisuanke.com/contest/870

题意:

直角坐标系上有两个三角形,它们都超某个方向匀速移动,问它们会不会在某个时候相碰

输入两行。每一行前6个数为三角形三个点坐标,后两个数dx, dy表示点(x, y)在单位时间后移动到(x+dx, y+dy)

思路:

将两个三角形的速度相减,这样问题就简化为其中一个三角形原地不动,问另一个三角形是否会碰到第二个三角形

对于移动的三角形暴力每个点,对于每个点暴力不动三角形的每条边,判断这个点在移动时是否会穿过这条边即可

具体怎么判断,有一个比较好理解的方法:

设动点为(x, y),线段两个端点为(x1, y1)和(x2, y2) (x1<=x2),dx和dy为动点的单位移动距离,t为时间

将线段转化成点斜式方程:y-y1=k(x-x1),k为斜率,然后将(x+t*dx, y+t*dy)带入点斜式方程求出t

若t>0,且此时x1<=x+t*dx<=x2,那么说明会相交,否则不会

中间注意特判分母为0的情况

补:其实这样是错的,我忘了两个三角形都要作为不动三角形判定一次才对,因为可能一个三角形很大一个三角形很小。。。感谢评论区dalao提醒

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
typedef struct
{double x1, y1;double x2, y2;double x3, y3;
}Res;
Res A, B;
double Jud(double x, double y, double dx, double dy, double x1, double y1, double x2, double y2)
{double t, ex, ey, k;if(x1==x2){if(dx==0){if(x!=x1)return 0;t = 0;}else{t = (x1-x)/dx;if(t<0)return 0;}if(y1>y2)swap(y1, y2);if(y+t*dy<y1 || y+t*dy>y2)return 0;return 1;}else{k = (y1-y2)/(x1-x2);if(fabs(k*dx-dy)<=1e-8){if((y-y1)!=k*(x-x1))return 0;t = 0;}else{t = (y-y1+k*x1-k*x)/(k*dx-dy);if(t<0)return 0;}x += t*dx, y += t*dy;if(x1>x2)swap(x1, x2);if(x<x1 || x>x2)return 0;return 1;}
}
int main(void)
{double T, ok, x, y, dx, dy;int cas = 1;scanf("%lf", &T);while(T--){ok = 0;scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &A.x1, &A.y1, &A.x2, &A.y2, &A.x3, &A.y3, &dx, &dy);scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &B.x1, &B.y1, &B.x2, &B.y2, &B.x3, &B.y3, &x, &y);dx -= x, dy -= y;ok = max(ok, Jud(A.x1, A.y1, dx, dy, B.x1, B.y1, B.x2, B.y2));ok = max(ok, Jud(A.x1, A.y1, dx, dy, B.x1, B.y1, B.x3, B.y3));ok = max(ok, Jud(A.x1, A.y1, dx, dy, B.x2, B.y2, B.x3, B.y3));ok = max(ok, Jud(A.x2, A.y2, dx, dy, B.x1, B.y1, B.x2, B.y2));ok = max(ok, Jud(A.x2, A.y2, dx, dy, B.x1, B.y1, B.x3, B.y3));ok = max(ok, Jud(A.x2, A.y2, dx, dy, B.x2, B.y2, B.x3, B.y3));ok = max(ok, Jud(A.x3, A.y3, dx, dy, B.x1, B.y1, B.x2, B.y2));ok = max(ok, Jud(A.x3, A.y3, dx, dy, B.x1, B.y1, B.x3, B.y3));ok = max(ok, Jud(A.x3, A.y3, dx, dy, B.x2, B.y2, B.x3, B.y3));if(ok==1)printf("Case #%d: YES\n", cas++);elseprintf("Case #%d: NO\n", cas++);}return 0;
}

2017 ACM-ICPC乌鲁木齐网络赛 B. Out-out-control cars(几何)相关推荐

  1. 2019 ACM - ICPC 上海网络赛 E. Counting Sequences II (指数型生成函数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  2. HDU - 5875 2016 ACM/ICPC 大连网络赛 H题 暴力

    题目链接 题意:给你一个区间l,r一直将val[l]模上val[l+1],val[l+2]...val[r],因为一个模上比前一个数小数是没有意义的,所以需要将每一个点找到右边第一个小于他的点就行. ...

  3. HDU - 5876 Sparse Graph 2016 ACM/ICPC 大连网络赛 I题 bfs+set+补图最短路

    题目链接 题意:给的补图,让你求一个源点到其他点的最短距离,因为图太稠密了, 用dij以及spfa根本不得行,这里只能用一种我不会方法来进行,这里用了bfs的方法以及set来维护,分别set维护一个未 ...

  4. HDU - 5877 Weak Pair 2016 ACM/ICPC 大连网络赛 J题 dfs+树状数组+离散化

    题目链接 You are given a rootedrooted tree of NN nodes, labeled from 1 to NN. To the iith node a non-neg ...

  5. 2013 ACM/ICPC 长沙网络赛J题

    题意:一个数列,给出这个数列中的某些位置的数,给出所有相邻的三个数字的和,数列头和尾处给出相邻两个数字的和.有若干次询问,每次问某一位置的数字的最大值. 分析:设数列为a1-an.首先通过相邻三个数字 ...

  6. 乌鲁木齐网络赛J题(最小费用最大流模板)

    ACM ICPC 乌鲁木齐网络赛 J. Our Journey of Dalian Ends 2017-09-09 17:24 243人阅读 评论(0) 收藏 举报  分类: 网络流(33)  版权声 ...

  7. 2016 ICPC 北京网络赛 A 恶心模拟 F 循环矩阵,FFT(待补) I 模拟

    2016 ICPC 北京网络赛 A - The Book List 题意:每本书有所属种类,给出原生的存放方式,求按新的方式存放的样子. tags:坑到心态爆炸的题==  直接堆进vector里搞的, ...

  8. 2019年安徽大学ACM/ICPC实验室新生赛题解

    本文仅作个人收藏学习使用 题目及解析来源牛客竞赛网 //作者:王清楚 //链接:https://ac.nowcoder.com/discuss/351408?type=101&order=0& ...

  9. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  10. 2019 ICPC 南昌网络赛 H. The Nth Item

    2019 ICPC 南昌网络赛 H. The Nth Item 题目大意:已知一个数列F(n): F(0)=0,F(1)=1 F(n)=3∗F(n−1)+2∗F(n−2),(n≥2) ​ 给你一个操作 ...

最新文章

  1. Vbox共享文件夹不显示了
  2. 序列模式挖掘、频繁项集与频繁序列
  3. Github Pages 搭建网站
  4. 安卓简单天气预报app源码_七个个小众但实用的APP,效率翻倍~
  5. WPF学习笔记-第二周【基本笔刷】
  6. 又出问题!特斯拉回应384万天价充电费:系统错误,正在修复
  7. 32岁男子沉迷网游十年离世 临终称真有意思
  8. 切图具体需要切什么内容_什么是切图?网页制作中的切图是什么?
  9. C语言的考试系统,C语言考试系统.doc
  10. VNC远程控制软件,VNC远程控制软件如何实现批量管理服务器
  11. face_recognition 人脸识别
  12. 单片机---HLK-W801移植Nes模拟器(一)
  13. 软件工程研究生在读一年总结
  14. [FAQ10019]HDMI/MHL如何修改手机默认横竖屏显示方式
  15. 批量转换经纬度的网页实现方法
  16. [Python]PEP8 编码规范及开发中的一些惯例和建议
  17. 一文梳理 | 电力企业网络安全管理及等级保护工作重点
  18. C# DataGridView控件选中某行和获取单元格数据
  19. idea从零到精通02之idea基础设置
  20. 盘古开天辟地之源码编译安装LAMP

热门文章

  1. python从入门到精通pdf-跟老齐学Python+从入门到精通 PDF 下载
  2. python 菜鸟-Python 元组
  3. 智能机器人语音识别技术
  4. 搜狗王小川:搜狗的语音识别比阿里和科大讯飞的好
  5. 从输入url到页面加载完成发生了什么
  6. php用手机摇一摇,H5做出手机摇一摇功能的实现步骤
  7. 【宽度优先搜索笔记】BFS输出最短路径
  8. c语言五个整数排列,刚学c语言,老师让用if编一个五个数字从大到小的排序,有那个大神能帮我,谢谢啦...
  9. 盒子模型的各种高度记录
  10. xml中加html源码,从xml获取数据以插入html标签,但在源代码中未看到