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

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

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

#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. 关于解决emoji表情的存储

    近段时间处理,由于工作需求,需要使得用户插入的emoji表情能够正常显示及使用,所以做个总结,以备后用. 说明:本方法只在mysql环境中测试 1.首先程序在连接数据库时,要指定数据库字符集的设置 c ...

  2. 5 -- Hibernate的基本用法 --4 3 JDBC连接属性

    Hibernate需要进行数据库访问,因此必须设置连接数据库的相关属性.所有Hibernate属性的名字和语义都在org.hibernate.cfg.Environment中定义. 关于JDBC连接配 ...

  3. java命令行操作

    一直使用eclipse操作java程序,但RMI程序需要命令行操作,故研究了下java的命令行操作. javac 用于编译.java文件,生成.class文件 假设文件夹dir下有pa.java和a. ...

  4. 【Python】paddlepaddle docker python2.7 centos运行

    PS E:\AI\BlockMining> docker cp .\LearnPaddle-master\ 30acd98dbc60:\rootPS E:\AI\BlockMining> ...

  5. 音频——H5 audio

    分享站又有新功能了:将文件站上的语音文件正确播放出来.效果图: 暂停: 播放: 实现的效果:类似于音乐播放器一般,但是较之更简单一些,可以正常播放语音,有拖动.快进后退效果便可. 思路: 首先想到的便 ...

  6. .net垃圾收集机制【转】

    在.NET Framework中,内存中的资源(即所有二进制信息的集合)分为"托管资源"和"非托管资源".托管资源必须接受.NET Framework的CLR( ...

  7. 原:Myeclipse10+Egit+bitbucket实现版本控制

    1.首先在https://bitbucket.org注册账号,建立仓库(repository),这部分有问题的可以看https://confluence.atlassian.com/display/B ...

  8. QT之 Hello World

    下载……   我下载的Qt creater 版本为4.2.1,Qt版本为5.8.0 打开QT Creater 1. 新建项目 New Project -> Application -> Q ...

  9. JS 运行、复制、另存为 代码。

    //运行代码 function runEx(cod1) { cod = document.getElementById(cod1) var code = cod.value; if (code != ...

  10. 【面试题】100IT名企java面试必考面试题

    一.Java 基础部分 1.   JAVA 的基本数据类型有哪些 ?   String 是不是基本数据类型 ? Java  有 8 种基本数据类型:           byte    int     ...