(图论)51NOD 1264 线段相交
输入
第1行:一个数T,表示输入的测试数量(1 <= T <= 1000)
第2 - T + 1行:每行8个数,x1,y1,x2,y2,x3,y3,x4,y4。(-10^8 <= xi, yi <= 10^8)
(直线1的两个端点为x1,y1 | x2, y2,直线2的两个端点为x3,y3 | x4, y4)
输出
输出共T行,如果相交输出"Yes",否则输出"No"。
输入样例
2
1 2 2 1 0 0 2 2
-1 1 1 1 0 0 1 -1
输出样例
Yes
No
解:
方法一(函数):
已知两点,故可以求得两点所在直线方程Ax+By+C=0。
Ax1+By1=Ax2+By2----->A=k(y2-y1);B=k(x1-x2);C=k(x2y1-x1y2);
另两点位置不应位于直线同侧(四点共线需特殊判断)。
将另两点坐标分别带入方程,比较结果与零的关系,可以判断两点与直线的相对位置关系。
(其实写这道题最大的收获是对于?:运算符的使用有了更多的理解)
#include <stdio.h> long long num[];
int cfun()
{
long long a, b, c, fg1, fg2;
a = num[] - num[];
b = num[] - num[];
c = num[] * num[] - num[] * num[];
fg1 = a * num[] + b * num[] + c > ? : a * num[] + b * num[] + c == ? : -;///
fg2 = a * num[] + b * num[] + c > ? : a * num[] + b * num[] + c == ? : -;
if (fg1 * fg2 > ) return ;
else if ( == (fg1 | fg2))//不加这段if判断也可以ac,但其实程序并没有对于四点一线特殊情况的判断。
{
int max[], min[];
max[] = num[] > num[] ? (min[] = num[], num[]) : (min[] = num[], num[]);///
max[] = num[] > num[] ? (min[] = num[], num[]) : (min[] = num[], num[]);
if (max[] < min[] || max[] < min[]) return ;
else return ;
}
a = num[] - num[];
b = num[] - num[];
c = num[] * num[] - num[] * num[];
fg1 = a * num[] + b * num[] + c > ? : -;
fg2 = a * num[] + b * num[] + c > ? : -;
if (fg1 * fg2 > ) return ;
return ;
} int main()
{
int t;
while (scanf_s("%d", &t) != EOF)
{
//FILE *fp;
//fopen_s(&fp, "a.txt", "w" );
while (t--)
{
scanf_s("%lld%lld%lld%lld%lld%lld%lld%lld", &num[], &num[], &num[], &num[], &num[], &num[], &num[], &num[]);
fprintf(stdout,"%s\n", cfun() > ? "Yes": "No");
}
//fclose(fp);
}
return ;
}
方法二(向量):
从网上看到的做法,简单的说就是通过两个实验
1.快速排斥实验(判断以两点为对角线的矩形的重合情况)
2.跨立实验(判断两点连线与另两点的相对位置关系【进行两次】)
从而得出答案。
其实两种方法殊途同归,从数学的角度可以借此看出一些一次函数和向量的关系。
(图论)51NOD 1264 线段相交的更多相关文章
- 51nod 1264 线段相交(几何)
题目链接:51nod 1264 线段相交 如果两条线段相交,则需满足一条线段的一个端点在另一条线段上,或者 两条线段都分别跨越另一条线段延伸的直线上.(如果点p1位于直线p3p4的一边,而点p2位于该 ...
- 51Nod 1264 线段相交(计算几何)
1264 线段相交 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相 ...
- 判断线段相交 -- 51nod 1264 线段相交
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1264 三角形的有向面积:a.x*b.y+b.x*c.y+c.x*a.y ...
- 51nod 1264 线段相交——计算几何
题目链接:http://www.51nod.com/Challenge/Problem.html#!#problemId=1264 检查点的位置就行了,具体见注释. /* (a-c)×(d-c)*(d ...
- 51nod 1264 线段相交
题目:传送门. 题意:给两条线段,有一个公共点或有部分重合认为相交,问他们是否相交. 题解:这属于非规范相交的情况,模板题. #include <iostream> #include &l ...
- 51nod1264线段相交
1264 线段相交 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交, ...
- (计算几何 线段判交) 51nod1264 线段相交
1264 线段相交 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交,输出"Yes",否则输出"No". ...
- 51nod--1264 线段相交 (计算几何基础, 二维)
题目: 1264 线段相交 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为 ...
- 51Nod 1264:线段相交(计算几何)
51Nod 1264:线段相交 Decision 给出平面上两条线段的两个端点,判断这两条线段是否相交(有一个公共点或有部分重合认为相交). 如果相交,输出"Yes",否则输出&q ...
随机推荐
- PAT (Advanced Level) 1033. To Fill or Not to Fill (25)
贪心.注意x=0处没有加油站的情况. #include<cstdio> #include<cstring> #include<cmath> #include< ...
- 动态规划:HDU 1114 Piggy-Bank
Problem Description Before ACM can do anything, a budget must be prepared and the necessary financia ...
- MongoDB学习day08--mongoose预定义修饰符和getter、setter修饰符
一.mongoose预定义修饰符 lowercase. uppercase . trim var UserSchema=mongoose.Schema({ name:{ type:String, tr ...
- 蓦然回首,Java 已经 24 岁了!
01.蓦然 真没想到,Java 竟然 24 岁了(算是 90 后)! 提起 Java,印象最深刻的当然就是: class Cmower { public static void main(Strin ...
- Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻clientTab标签
之前用JakeWharton的开源框架ActionBarSherlock和ViewPager实现了对网易新闻clientTab标签的功能,ActionBarSherlock是在3.0下面的机器支持Ac ...
- iOS远程推送原理
远程推送 就是从远程server推送消息给client的通知.当然须要联网. 远程推送服务APNs (Apple Push NotificationServices) 为什么须要远程推送通知? 传统获 ...
- [Analytics] Add Tealium debugger in Chrome
It would be helpful once you can see what information have been tracking inside you web application, ...
- “约定优于配置”与Magento改造尝试四之block、helper和model载入
暂定本章为这个系列最后一章,还是继续沿用模块的别名(alias)概念 <modules> <Mage_Wishlist> <version>1.6.0.0</ ...
- vue 获取当前时间 格式YYYY-MM-DD
函数封装: /** * 获取当前时间 * 格式YYYY-MM-DD */ Vue.prototype.getNowFormatDate = function() { var date = new Da ...
- javascript/jquery模板引擎——Handlebars初体验
Handlebars.js下载地址:http://handlebarsjs.com/ 最近自己在建一个站,采用完全的前后端分离的方式,现在正在做前端的部分.其中有项功能是需要ajax调用后端接口,返回 ...