大意: 是否存在一条直线,使所有线段在直线上的投影至少交与一点

  思路: 转换为是否存在一条直线与所有的线段相交,做这条直线的垂线,那么垂线即为所求

 **/
#include <iostream>
#include <cmath>
using namespace std;
int n;
const double eps = 1e-;
struct point{
double x,y;
}; struct line{
point a,b;
};
line l[];
double dis(point o,point p){
return sqrt((o.x-p.x)*(o.x-p.x)+(o.y-p.y)*(o.y-p.y));
} double cross(point o,point p,point q){
return (p.x-o.x)*(q.y-o.y)-(p.y-o.y)*(q.x-o.x);
}
int judge(point t1,point t2){
if(dis(t1,t2)<eps)
return ;
for(int i=;i<n;i++)
if(cross(t1,t2,l[i].a)*cross(t1,t2,l[i].b)>eps)
return ;
return ;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n;
for(int i=;i<n;i++)
cin>>l[i].a.x>>l[i].a.y>>l[i].b.x>>l[i].b.y;
int flag =;
if(n==)
flag =;
for(int i=;!flag&&i<n;i++){
for(int j=;!flag&&j<n;j++){
if(judge(l[i].a,l[j].a)||judge(l[i].a,l[j].b)||judge(l[i].b,l[j].a)||judge(l[i].b,l[j].b))
flag =;
}
}
if(flag)
cout<<"Yes!"<<endl;
else{
cout<<"No!"<<endl;
}
}
}

最新文章

  1. Git for Windows - The Program can&#39;t start because libiconv2.dll is missing
  2. ToJson
  3. jQuery---中的动画
  4. VMware 克隆 Linux 系统后找不到 eth0 网卡问题(转)
  5. StoryBoard 简单使用
  6. iwebshop二次开发(2)
  7. 【读书笔记】iOS-垃圾回收
  8. PowerShell调用jira rest api实现对个人提交bug数的统计
  9. Java单例类的简单实现
  10. string和stringBuilder的区别
  11. .NET设计模式(2):单件模式(Singleton Pattern)
  12. UESTC_敢说就敢做 CDOJ 631
  13. 未能加载文件 %CommonDir%\dte90a.olb。未能找到该文件,因此解决此问题的尝试失败
  14. CSS中 清除浮动解决“包含问题”
  15. php原生自定义验证码,5分钟搞定你的问题
  16. 2016.02.01日,UdoOS系统项目正式开通了
  17. 隱藏在素數規律中的Pi -- BZOJ1041解題報告
  18. CentOS下运行Java文件Error: Could not find or load main class
  19. c++语言的输入输出流库
  20. monobehaviour生命周期完整版

热门文章

  1. 如何显示Mac OS X上的隐藏文件和文件夹
  2. Android SQLite 事务处理
  3. Objective-C基础笔记(2)@property和@synthesize
  4. .NET读取Project 2007 MPP项目文件
  5. WebConfig特殊字符的转义!
  6. Javascript 自定义事件 (custom event)
  7. telnet测试端口号
  8. ORA-03113: 通信通道的文件结尾 进程 ID: 764 会话 ID: 125 序列号: 5
  9. Linux学习之输入输出重定向
  10. day6_python学习笔记_chapter8_条件,循环