poj 2007 Scrambled Polygon 极角排序


 1 /**
2 极角排序输出,,,
3 主要atan2(y,x) 容易失精度,,用
4 bool cmp(point a,point b){
5 if(cross(a-tmp,b-tmp)>0)
6 return 1;
7 if(cross(a-tmp,b-tmp)==0)
8 return length(a-tmp)<length(b-tmp);
9 return 0;
10 }
11 **/
12 #include <iostream>
13 #include <algorithm>
14 #include <cmath>
15 using namespace std;
16
17 struct point {
18 double x,y;
19 point (double x=0,double y=0):x(x),y(y){}
20 };
21 point p[100];
22 point tmp;
23 typedef point Vector;
24 Vector operator - (point a,point b){
25 return Vector (a.x-b.x,a.y-b.y);
26 }
27 double angle(Vector v){
28 return atan2(v.y,v.x);
29 }
30 double length(Vector v){
31 return sqrt(v.x*v.x+v.y*v.y);
32 }
33
34 double cross(Vector a,Vector b){
35 return a.x*b.y-a.y*b.x;
36 }
37 bool cmp(point a,point b){
38 if(cross(a-tmp,b-tmp)>0)
39 return 1;
40 if(cross(a-tmp,b-tmp)==0)
41 return length(a-tmp)<length(b-tmp);
42 return 0;
43 }
44
45 int main()
46 {
47 int cnt =0;
48 double x1,y1;
49 cin>>tmp.x>>tmp.y;
50 while(cin>>x1>>y1){
51 p[cnt].x = x1;
52 p[cnt].y = y1;
53 cnt++;
54 }
55 sort(p,p+cnt,cmp);
56 cout<<"("<<tmp.x<<","<<tmp.y<<")"<<endl;
57 for(int i=0;i<cnt;i++)
58 cout<<"("<<p[i].x<<","<<p[i].y<<")"<<endl;
59 return 0;
60 }

poj 2007 Scrambled Polygon 极角排序

时间: 2024-10-13 00:56:17

poj 2007 Scrambled Polygon 极角排序的相关文章

POJ 2007 Scrambled Polygon 极角序 水

LINK 题意:给出一个简单多边形,按极角序输出其坐标. 思路:水题.对任意两点求叉积正负判断相对位置,为0则按长度排序 /** @Date : 2017-07-13 16:46:17 * @FileName: POJ 2007 凸包极角序.cpp * @Platform: Windows * @Author : Lweleth ([email protected]) * @Link : https://github.com/ * @Version : $Id$ */ #include <std

poj 2007 Scrambled Polygon(极角排序)

http://poj.org/problem?id=2007 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6701   Accepted: 3185 Description A closed polygon is a figure bounded by a finite number of line segments. The intersections of the bounding line segments ar

简单几何(极角排序) POJ 2007 Scrambled Polygon

题目传送门 题意:裸的对原点的极角排序,凸包貌似不行. /************************************************ * Author :Running_Time * Created Time :2015/11/3 星期二 14:46:47 * File Name :POJ_2007.cpp ************************************************/ #include <cstdio> #include <al

POJ 2007 Scrambled Polygon(简单极角排序)

水题,根本不用凸包,就是一简单的极角排序. 叉乘<0,逆时针. #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> using namespace std; const int maxn=55; struct point { double x,y; } p[maxn]; double cross(poi

POJ 2007 Scrambled Polygon (简单极角排序)

题目链接 题意 : 对输入的点极角排序 思路 : 极角排序方法 #include <iostream> #include <cmath> #include <stdio.h> #include <algorithm> using namespace std; struct point { double x,y; }p[50],pp; double cross(point a,point b,point c) { return (a.x-c.x)*(b.y-c

POJ 2007 Scrambled Polygon(凸包)

Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7568   Accepted: 3604 Description A closed polygon is a figure bounded by a finite number of line segments. The intersections of the bounding line segments are called the

POJ 2007 Scrambled Polygon(计算几何 叉积排序啊)

题目链接:http://poj.org/problem?id=2007 Description A closed polygon is a figure bounded by a finite number of line segments. The intersections of the bounding line segments are called the vertices of the polygon. When one starts at any vertex of a close

POJ 2007 Scrambled Polygon

虽然A了但是完全不懂这题在干什么. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 105 using namespace std; struct point { int x,y; point (int x,int y):x(x),y(y) {} point () {} friend point operator - (point x

Scrambled Polygon(差集排序)

Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7799   Accepted: 3707 Description A closed polygon is a figure bounded by a finite number of line segments. The intersections of the bounding line segments are called the