2011年7月28日
摘要: 题目:http://www.cnblogs.com/lujiacheng/admin/EditPosts.aspx?opt=1给了n条线段,求有几个交点,重复的也要算。判断两线段是否相交: 我们分两步确定两条线段是否相交: (1)快速排斥试验 设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。 (2)跨立试验 如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的两侧,即( P1 - Q1 ) × ( Q2 - 阅读全文
posted @ 2011-07-28 15:50 渲染独白 阅读(213) 评论(1) 推荐(1) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1558判断两条线段是否相交,如果相交就是在一个集合内,问第i条线段所在集合的元素个数。判断线段相交+并查集代码:View Code 1 #include<stdio.h> 2 #define maxn 1001 3 int dnum[maxn],father[maxn]; 4 5 struct node 6 { 7 double sx,sy,ex,ey; 8 }line[maxn]; 9 10 double direction(double x1,double y1,double x2,do 阅读全文
posted @ 2011-07-28 15:45 渲染独白 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 题目:http://acm.hdu.edu.cn/showproblem.php?pid=1272方法一:当你输入的x,y的根节点fx,fy相同时,说明已经可达,再连接就是有多余一条路径了。迷宫应该只有一个集合,多余一个就不符合。当直接输入00时,直接输出yes代码:View Code 1 #include<stdio.h> 2 int father[100001]; 3 bool visit[100001]; 4 int find(int x) 5 { 6 while(x!=father[x]) 7 x=father[x]; 8 return x; 9 }10 11 int ma 阅读全文
posted @ 2011-07-28 10:21 渲染独白 阅读(267) 评论(1) 推荐(0) 编辑