POJ1127 Jack Straws
给你一些线段,求出哪些线段是相连的,哪些是不相连的。相连包括间接相连,即这两条线段本身不直接相连,而是通过其它线段的连接而间接相连。
线段相交+并查集
这里主要说如何判断线段相交:快速排斥试验+跨立试验
牢记一点:研究对象一定是两条线段的四个端点
(快速排斥试验:只是可以证明这两条一定不相交,达到一点加速效果)
以线段P1,P2为对角线作一矩形R,再以Q1,Q2为对角线作矩形T,当两个矩形不相交的时候两条线段肯定不相交,即线段相交的必要条件时矩形相交。
矩阵相交依据:两条线段一共四个端点,x/y轴中,最小的两个端点不能属于同一条线段
min(p1.x,p2.x)<=max(q1.x,q2.x)&&
min(q1.x,q2.x)<=max(p1.x,p2.x)&&
min(p1.y,p2.y)<=max(q1.y,q2.y)&&
min(q1.y,q2.y)<=max(p1.y,p2.y)
(跨立试验:叉乘+点乘,保证一条线段的两端点在另一条线段的两侧)
(Q1P1xQ1Q2)*(Q1Q2xQ1P2)>0
(P1Q1xP1P2)*(P1Q2xP1P2)>0
叉乘公式:
a x b=(l,m,n)x(o,p,q)=((mq-pn),(no-lq),(lp-mo))
平面的话 a x b=(a.x,a.y,0)x(b.x,b.y,0)=(0,0,a.x*b.y-a.y-b.x)
上代码:
- struct point{
- int x,y;
- };
- struct seg{
- point a,b;
- }S;
- int mul(point p1,p2,p3){
- return (p1.x-p2.x)*(p3.y-p2.y)-(p1.y-p2.y)*(p3.x-p2.x);
- }
- bool insect(point p1,p2,q1,q2){
- if(max(p1.x,p2.x)<min(q1.x,q2.x)||max(q1.x,q2.x)<min(p1.x,p2.x)||max((max(p1.y,p2.y)<min(q1.y,q2.y)||max(q1.y,q2.y)<min(p1.y,p2.y))return ;
- if(mul(q1,p1,p2)*mul(p2,p1,q2)<=&&mul(p1,q2,q1)*mul(q1,q2,p2)<=)return ;
- return ;
- }
- int find(int x){
- return fa[x]==x?x:fa[x]=find(fa[x]);
- }
- void uone(int a,b){
- int t1=find(a),t2=find(b);
- if(t1==t2)return;
- if(rk[t1]>rk[t2])fa[t2]=t1;
- else fa[t1]=t2;
- if(rk[t1]==rk[t2])rk[t2]++;
- }
- For(i,,n)
- For(j,,i-)
- if(find(i)!=find(j)&&insect(seg[i].a,seg[i].b,seg[j].a,seg[j].b))
- uone(i,j);
POJ1127 Jack Straws的更多相关文章
- poj1127 Jack Straws(线段相交+并查集)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Jack Straws Time Limit: 1000MS Memory L ...
- 1840: Jack Straws
1840: Jack Straws 时间限制(普通/Java):1000MS/10000MS 内存限制:65536KByte 总提交: 168 测试通过:129 描述 I ...
- Jack Straws(poj 1127) 两直线是否相交模板
http://poj.org/problem?id=1127 Description In the game of Jack Straws, a number of plastic or wood ...
- TZOJ 1840 Jack Straws(线段相交+并查集)
描述 In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the ta ...
- poj 1127:Jack Straws(判断两线段相交 + 并查集)
Jack Straws Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2911 Accepted: 1322 Descr ...
- TOJ 1840 Jack Straws
Description In the game of Jack Straws, a number of plastic or wooden "straws" are dumped ...
- Jack Straws POJ - 1127 (简单几何计算 + 并查集)
In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the table ...
- Jack Straws POJ - 1127 (几何计算)
Jack Straws Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5428 Accepted: 2461 Descr ...
- TOJ1840: Jack Straws 判断两线段相交+并查集
1840: Jack Straws Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: 1 ...
随机推荐
- Linux常用基本命令( rmdir, rm, mv )
1,rmdir,一个很鸡肋的命令,只能删除空目录 ghostwu@dev:~/linux/cp$ ls .txt .txt a a2 a3 ghostwu@dev:~/linux/cp$ rmdir ...
- MySQL常用操作汇编
熟悉 我熟悉xxx,其实很多原来熟悉到能背的,如果长时间不用了几乎也就忘了.此时再说自己熟悉XXX就被认为是在吹牛B了,感觉不是很好.所谓温故而知新,对于天资不聪颖的,就是要在一遍一遍的复习实践中慢慢 ...
- 【代码笔记】iOS-可拷贝的label
一,效果图. 二,工程图. 三,代码. ViewController.m #import "ViewController.h" #import "MKBeCopyLabe ...
- jquery 下拉框插件,实现智能补全,模糊搜索,多选
近期已朋友问我问题,实现类似淘宝百度的下啦搜索条,看了网上好多帖子,都看起来好复杂,而且引用了好多没用的东西,而且多选选择内容多之后容易样式奔溃, 无奈之下只好自己改了, 话不多说上效果图: 模糊搜索 ...
- ebook
libgen.io onlybooks.org www.ebook3000.com www.foxebook.net
- IIS下众多网站,如何快速定位某站点日志在哪个文件夹?
windows2008,iis 多站点, 日志.应用程序池都是默认设置, 没有分开………… Logs目录里面有W3SVC43,W3SVC44,W3SVC45,W3SVC46.....等等日志文件夹. ...
- 使用anaconda安装pytorch的清华镜像地址
1.安装anaconda:国内镜像网址:https://mirror.tuna.tsinghua.edu.cn/help/anaconda/下载对应系统对应python版本的anaconda版本(Li ...
- 结合 Redis 实现同步锁
1.技术方案 1.1.redis的基本命令 1)SETNX命令(SET if Not eXists) 语法:SETNX key value 功能:当且仅当 key 不存在,将 key 的值设为 val ...
- windows-oracle 11g dataguard with dgbroker
一: DG的配置 oracle dg 考验dba综合能力.首先明确3个知识点: SID, SERVICE_NAME,,DB_NAME, DB_UNIQUE_NAME SID: 实例名,用于标识一个数据 ...
- systemd 之 journalctl
Systemd 日志系统 一.前言 昨天写了一篇文章,内容为:Systemd 常规操作与彩蛋,参考了 ArchLinux 官方文档并结合培训中的思路进行了部分修改补充.如果你懂得了基础的管理,那必然还 ...