最近开始刷计算几何了 公式好多完全不会

数学不行 几何不行 记忆力不行 当机

查的题解 就当复习吧 这套专题拿来熟悉一下计算几何模板

#include <iostream>
#include<stdio.h>
#include<math.h> using namespace std; const double eps = 1e-8;
int sgn(double x)//处理精度
{
if(fabs(x) < eps) return 0;
if(x < 0) return -1;
return 1;
}
struct point{
double x, y;
point(){}
point(double xx, double yy):x(xx), y(yy){}
point operator -(const point &a) const{
return point(x - a.x, y - a.y);
}
double operator ^(const point &a) const{
return x * a.y - y * a.x;
}
double operator *(const point &a) const{
return x * a.x + y * a.y;
}
};
struct line{
point s, e;
line(){}
line(point ss, point ee):s(ss), e(ee){}
}; double xmult(point p0, point p1, point p2)//判断p0是否在p1-p2直线上
{
return (p1 - p0) ^ (p2 - p0);
}
bool seg_line(line a, line b)
{
return sgn(xmult(b.s, a.s, a.e) * sgn(xmult(b.e, a.s, a.e))) <= 0;//线段b的两个端点在直线a的两端
} double dist(point a, point b)
{
return sqrt((b - a) * (b - a));
} const int maxn = 110;
line ll[maxn];
bool check(line a, int n)
{
if(sgn(dist(a.s, a.e))== 0) return false;
for(int i = 0; i < n; i++){
if(seg_line(a, ll[i]) == 0)
return false;
}
return true;
} int main()
{
int n, t;
cin>>t;
while(t--){
cin>>n;
double x1, x2, y1, y2;
for(int i = 0; i < n; i++){
cin>>x1>>y1>>x2>>y2;
ll[i] = line(point(x1, y1), point(x2, y2));
}
int flag = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
if(check(line(ll[i].s, ll[j].s), n) || check(line(ll[i].s, ll[j].e), n)||
check(line(ll[i].e, ll[j].s), n) || check(line(ll[i].e, ll[j].e), n)){
flag = true;//找到了一条直线可以和所有的线段相交
break;
}
}
}
printf("%s\n", flag ? "Yes!" : "No!");
}
return 0;
}

poj3304 Segments【计算几何】的更多相关文章

  1. HDU 6697 Closest Pair of Segments (计算几何 暴力)

    2019 杭电多校 10 1007 题目链接:HDU 6697 比赛链接:2019 Multi-University Training Contest 10 Problem Description T ...

  2. POJ3304 Segments 【线段直线相交】

    题意: 给出n条线段两个端点的坐标,问所有线段投影到一条直线上,如果这些所有投影至少相交于一点就输出Yes!,否则输出No!. 思路: 计算几何.这道题要思考到两点: 1:把问题转化为是否存在一条直线 ...

  3. POJ3304(KB13-C 计算几何)

    Segments Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15335   Accepted: 4862 Descrip ...

  4. POJ3304:Segments (几何:求一条直线与已知线段都有交点)

    Given n segments in the two dimensional space, write a program, which determines if there exists a l ...

  5. POJ 3304 Segments(计算几何)

    意甲冠军:给出的一些段的.问:能否找到一条直线,通过所有的行 思维:假设一条直线的存在,所以必须有该过两点的线,然后列举两点,然后推断是否存在与所有的行的交点可以是 代码: #include < ...

  6. POJ3304 Segments

    嘟嘟嘟 题面就不说了,网上都有. 刚开始理解成了只要有不孤立的线段就算合法,结果就不会了--然而题中要求是所有线段至少有一个交点. 其实想一想就知道,问题转化为了是否存在一条直线和所有线段都有交点. ...

  7. 【kuangbin专题】计算几何基础

    1.poj2318 TOYS 传送:http://poj.org/problem?id=2318 题意:有m个点落在n+1个区域内.问落在每个区域的个数. 分析:二分查找落在哪个区域内.叉积判断点与线 ...

  8. poj分类解题报告索引

    图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Jou ...

  9. 2018.07.04 POJ 3304 Segments(简单计算几何)

    Segments Time Limit: 1000MS Memory Limit: 65536K Description Given n segments in the two dimensional ...

随机推荐

  1. 使用jquery操作session

    摘要: 今天分享的是使用jquery来处理session.我们将使用sessionStorage对象,它类似与localStorage对象,只是sessionStorage是用来储存session数据 ...

  2. 关于python单方法的类

    1.大部分情况下,你拥有一个单方法类的原因是需要存储某些额外的状态来给方法使用. 此种情况下可以使用闭包代替,参考 javascript的闭包计数器实现,python实现各种方法来实现计数器 关于这个 ...

  3. Java实现窗体动态加载磁盘文件

    在使用图形界面操作系统时,当打开一个文件夹系统会自动列出该文件夹下的所有文件及子文件夹.本实例实现了类似的功能:首先让用户选择一个文件夹,程序会动态列出该文件夹下的所有文件:如果该文件是隐藏文件,就在 ...

  4. CentOS 6.3下搭建Web服务器

    准备前的工作: 1.修改selinux配置文件(/etc/sysconfig/selinux) 关闭防火墙 (1)把SELINUX=enforcing注释掉 (2)并添加SELINUX=disable ...

  5. 在eclipse中查看android源代码

    自己写了一个类MainAcvitivity extends Activity, 按F12(我把转到定义改成了F12的快捷键),转到Activity的定义,弹出下面这样的界面 就是说没有找到androi ...

  6. jumpserver安装及使用教程

    我自己是jumpserver的新手,以下两个链接是比较好的教程: 安装教程:http://blog.csdn.net/wanglei_storage/article/details/51001810 ...

  7. easyui combobox 实时刷新

    使用场景: A页面以及B页面,A页面有个下拉框,数据是从B页面存在的数据库中获取得到的:现将B页面的数据删除掉,但是在A页面再次点开下拉框时,依旧看到了刚才删除的那条数据: 期望:当B页面已何种方式改 ...

  8. React Native(十四)——Slider

    最近我们rn版的App快要内测了,小伙伴们都在积极的改bug,于是在其中就遇到了关于Slider的部分小知识,特地记录自己用到的部分属性,也许恰好会帮助到用到该组件的你: 属性罗列(https://r ...

  9. Linux下Apache网站目录读写权限的设置

    网站目录文件权限的设置对网站的安全至关重要,下面简单介绍网站目录文件权限的基本设定. 我们假设http服务器运行的用户和用户组是www,网站用户为centos,网站根目录是/home/centos/w ...

  10. 《转》python学习(10)-集合

    转自 http://www.cnblogs.com/BeginMan/p/3160565.html 一.目录 1.集合概述 2.关于集合的操作符.关系符号 3.集合的一系列操作(添加.更新.访问.删除 ...