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

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

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

#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. 虚拟机安装linux系统无法上网的解决方法

    原文:https://www.jb51.net/article/118267.htm 周末闲来无事,用虚拟机安装了centos6.5系统,安装成功后发现不能连接网络,然后我就一脸蒙蔽了,无奈之下,只能 ...

  2. 微信企业号OAuth2验证接口实例(使用SpringMVC)

    微信企业号OAuth2验证接口(使用SpringMVC) 企业应用中的URL链接(包含自己定义菜单或者消息中的链接).能够通过OAuth2.0来获取员工的身份信息. 注意.此URL的域名,必须全然匹配 ...

  3. 8 -- 深入使用Spring -- 8...1 Spring提供的DAO支持

    8.8.1 Spring提供的DAO支持. DAO模式是一种标准的Java EE设计模式,DAO模式的核心思想是,所有的数据库访问都通过DAO组件完成,DAO组件封装了数据库的增.删.查.改等原子操作 ...

  4. mongodb 按照时间聚类 java

    当存储到mongodb中的是string类型的时间,小tips: 1. 那么在对此域按照时间聚类(每周,每月)时就不能直接使用mongodb的time关键字了,因为mongodb有自己的时间类型,且目 ...

  5. Python 文件学习笔记

    程序1 在上一题的基础上扩展,用户可以随意输入要显示的行数. 如输入2:5表示打印第2行到第5行的内容: 输入:2表示打印从开头到第2行的内容: 输入4:表示打印从第4行到结尾的内容: 输入:表示打印 ...

  6. XML转JSON工具类

    原文地址:http://blog.csdn.net/lovesummerforever/article/details/26396465 1.pom依赖 <dependency> < ...

  7. Jsoup(四)-- Jsoup获取DOM元素属性值

    1.获取博客园的博客标题以及博客地址,获取友情链接 2.代码实现: public static void main(String[] args) throws Exception{ // 创建http ...

  8. zabbix监控第一台服务器

    客户机的IP是192.168.0.80,主机名是wls12c 1. 安装客户端, 1.1 新建zabbix的用户 groupadd zabbix useradd -g zabbix zabbix 1. ...

  9. Android开发训练之第五章第三节——Transferring Data Without Draining the Battery

    Transferring Data Without Draining the Battery GET STARTED DEPENDENCIES AND PREREQUISITES Android 2. ...

  10. STL 迭代器 iterator const

    STL迭代器很多时候可以当成指针来使用. 但是指针一般可以用const来控制访问. 那迭代器呢. #include <iostream> #include <vector> u ...