POJ 2653 Pick-up sticks <计算几何>
来源:互联网 发布:中国政治体系 知乎 编辑:程序博客网 时间:2024/05/12 10:13
题目
水题。。但是不知道为什么从后往前扫会超时。。
代码:
#include <iostream>#include <cmath>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const double EPS=1e-8;const int MAXN=1e5+5;struct Point;typedef Point Vec;int dblcmp(double x){ return fabs(x)<EPS?0:(x>0?1:-1);}struct Point{ double x,y; Point(){} Point(double xx,double yy):x(xx),y(yy){} Vec operator -(Point p){ return Point(x-p.x,y-p.y); } double operator ^(Vec v){ return x*v.y-y*v.x; }};struct Stick{ Point p1,p2; Stick(){} Stick(Point pp1,Point pp2):p1(pp1),p2(pp2){} bool isCross(Stick& s){ return (dblcmp((p2-p1)^(s.p1-p1))^dblcmp((p2-p1)^(s.p2-p1)))==-2&& (dblcmp((s.p2-s.p1)^(p1-s.p1))^dblcmp((s.p2-s.p1)^(p2-s.p1)))==-2; }};Stick stick[MAXN];int main(){ //ios::sync_with_stdio(false); int n; while(scanf("%d",&n),n){ double x1,y1,x2,y2; for(int i=0;i<n;++i){ scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2); stick[i]=Stick(Point(x1,y1),Point(x2,y2)); } printf("Top sticks: "); for(int i=0;i<n;++i){ int j; for(j=i+1;j<n;++j){ if(stick[i].isCross(stick[j])) break; } if(j==n){ if(i==n-1) printf("%d.\n",i+1); else printf("%d, ",i+1); } } } return 0;}
阅读全文
0 0
- poj 2653 Pick-up sticks 计算几何
- poj 2653 Pick-up sticks 计算几何
- POJ 2653 Pick-up sticks <计算几何>
- POJ 2653 Pick-up sticks(计算几何 求交点)
- POJ 2653 Pick-up sticks 计算几何 线段相交
- POJ 2653 && HDU 1147 Pick-up sticks(计算几何)
- POJ 2653 Pick-up sticks【计算几何入门】
- poj 2653 Pick-up sticks(计算几何)
- POJ 2653 Pick-up sticks [线段相交]【计算几何】
- POJ 2653 Pick-up sticks --队列,几何
- POJ 2653 - Pick-up sticks 重拾计算几何..暴力得不忍直视...
- POJ 2653 Pick-up sticks(计算几何 求线段交点)
- POJ 2653 Pick-up sticks(计算几何,判断线段相交)
- poj Pick-up sticks 2653 (计算几何 直线相交的判断)
- hdoj 1147 Pick-up sticks 计算几何
- 计算几何-hdoj-1147-Pick-up sticks
- [POJ2653]Pick-up sticks(计算几何)
- POJ2653 Pick-up sticks(计算几何)
- ubuntu 安装时执行sudo apt-get install xxx出现错误
- C语言计算N的阶层
- android源码常用网站
- oracle 数组
- python的异常
- POJ 2653 Pick-up sticks <计算几何>
- python3 爬虫面对如此多重复的标签,应该怎么爬才能爬到自己需要的信息
- 怎样"服务"创建的快捷方式放到桌面
- 计算属性
- <转>趣谈unicode,ansi,utf-8,unicode big endian这些编码有什么区别
- linux(ubuntu)安装 GCC 和 G++ C++ 开发环境
- 内存管理
- Spring 事物 expression="execution(*service..*.*(..))"
- Python-异常