POJ 2653 线段相交问题
来源:互联网 发布:矩阵化为行最简形 编辑:程序博客网 时间:2024/04/29 22:40
题意: 按顺序给出一堆线段的端点坐标 求最后没被覆盖的线段的序号 被覆盖(即后放入与先放入的相交) 利用叉积判断即可
#include <iostream>#include "stdio.h"#include "stdlib.h"#include "string.h"#include "math.h"#include "algorithm"#include <queue>using namespace std;#define modulo 1000000007const double eps=1e-8;int t,pos,first,last,vis[100001],ans,answer[1001];struct ed { double x1,y1,x2,y2;}edge[100001];double mult(double x1,double y1,double x2,double y2,double x3,double y3){ return (x1-x3)*(y2-y3)-(y1-y3)*(x2-x3);}int sgn(double x){ if(fabs(x)<eps) return 0; if(x<0) return -1; else return 1;}bool isinter(ed l1,ed l2){ return max(l1.x1,l1.x2)>=min(l2.x1,l2.x2)&& max(l2.x1,l2.x2)>=min(l1.x1,l1.x2)&& max(l1.y1,l1.y2)>=min(l2.y1,l2.y2)&& max(l2.y1,l2.y2)>=min(l1.y1,l1.y2)&& sgn(mult(l1.x1,l1.y1,l1.x2,l1.y2,l2.x1,l2.y1))*sgn(mult(l1.x1,l1.y1,l1.x2,l1.y2,l2.x2,l2.y2))<=0&& sgn(mult(l2.x1,l2.y1,l2.x2,l2.y2,l1.x1,l1.y1))*sgn(mult(l2.x1,l2.y1,l2.x2,l2.y2,l1.x2,l1.y2))<=0;}int main(void){ while(scanf("%d",&t)&&t) { pos=0; ans=0; memset(vis,0,sizeof vis); for(int i=0;i<t;i++) scanf("%lf%lf%lf%lf",&edge[i].x1,&edge[i].y1,&edge[i].x2,&edge[i].y2); for(int i=0;i<t;i++) for(int j=i+1;j<t;j++) if(isinter(edge[i],edge[j])) { vis[i]=1; break; } printf("Top sticks:"); for(int i=0;i<t;i++) if(!vis[i]) answer[pos++]=i+1; for(int i=0;i<pos-1;i++) printf(" %d,",answer[i]); printf(" %d.\n",answer[pos-1]); }}
0 0
- POJ 2653 线段相交问题
- POJ 2653 线段相交
- POJ 2653 线段相交
- poj 2653(线段相交)
- POJ 2653(线段相交)
- POJ 2653 判断线段相交
- POJ 2653 判断线段相交
- POJ 2653 (判断线段相交)
- POJ 2653 Pick-up sticks 线段相交问题
- POJ 2653 Pick-up sticks 线段相交问题
- POJ 2074 线段相交 视线问题
- poj 2653二维vector线段相交
- 【poj 2653】 Pick-up sticks 线段相交
- POJ 2653 暴力判断线段相交
- poj 2653 Pick-up sticks 线段相交
- POJ-2653 Pick-up sticks(线段相交)
- POJ 2653 线段相交判断 (叉积)
- POJ 2653 Pick-up sticks(线段相交)
- linux 打包某用户所有文件,到另一机器上新建同名用户并导入备份文件
- 碰撞体(Collider)以及触发器(Is Trigger)----碰撞的条件,触发碰撞器和触发器的条件
- HTML背景图的显示
- struts2的工作流程和运行原理
- Groovy SQL 分页组件
- POJ 2653 线段相交问题
- 10.1-7 两个队列实现一个栈
- html空标签
- 实现异步多线程下载文件
- Bash shell位置参数
- 用Json实现PHP与JavaScript间数据交换
- Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- 共享个地图控件的样式
- 批处理打开和关闭oracle11g 服务