博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj3304 Segments【计算几何】
阅读量:5217 次
发布时间:2019-06-14

本文共 1943 字,大约阅读时间需要 6 分钟。

 

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

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

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

#include 
#include
#include
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;}

转载于:https://www.cnblogs.com/wyboooo/p/9643416.html

你可能感兴趣的文章
linux查看端口占用
查看>>
hdu - 1226 超级密码 (bfs)
查看>>
Qt重写paintEvent方法遇到的问题
查看>>
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>
UNIX基础知识之输入和输出
查看>>
【洛谷 P1666】 前缀单词 (Trie)
查看>>
对称加密和非对称加密
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
图像处理中双线性插值
查看>>