题链:

http://poj.org/problem?id=2007

题解:

计算几何,极角排序

按样例来说,应该就是要把凸包上的i点按 第三像限-第四像限-第一像限-第二像限 的顺序输出。

按 叉积 来排序的确可以A掉,但是显然有错呀。

比如这个例子:

0 0

-2 2

-1 -1

1 0

正确答案显然应该是:

(0,0)

(-2,2)

(-1,-1)

(1,0)

但是 用叉积 排序后却是这样:

(0,0)

(1,0)

(-2,2)

(-1,-1)

(要用叉积排序的话,按道理来讲应该把像限分成两块分别排序吧(上一块(1,2像限),下一块(3,4像限))。)

而用atan2函数来比较,就可以达到正确答案的效果,可是无奈在POJ上会WA,原因不明~

(疑惑疑惑疑惑疑惑疑惑疑惑疑惑,(莫不是我题读错了?))

代码:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const double eps=1e-8;
int sign(double x){
if(fabs(x)<=eps) return 0;
return x<0?-1:1;
}
struct Point{
double x,y;
Point(double _x=0,double _y=0):x(_x),y(_y){}
int Read(){return scanf("%lf%lf",&x,&y);}
}D[70];
int N;
typedef Point Vector;
double operator ^ (Vector A,Vector B){return A.x*B.y-A.y*B.x;}
double Angle(Vector A){
return atan2(A.y,A.x);
}
bool PAcmp(Point A,Point B){//Polar_Angle_cmp
//return sign(Angle(A)-Angle(B))<0;
return sign(A^B)>0;
}
void Bubble_Sort(int l,int r){
for(int i=l;i<=r;i++)
for(int j=l;j<i;j++)
if(PAcmp(D[i],D[j])) swap(D[i],D[j]);
}
int main(){
freopen("/home/noilinux/Documents/模块学习/计算几何/input","r",stdin);
while(~D[++N].Read());
sort(D+2,D+N,PAcmp);
//Bubble_Sort(2,N-1);
for(int i=1;i<N;i++)
printf("(%0.lf,%0.lf)\n",D[i].x,D[i].y);
return 0;
}

  

●POJ 2007 Scrambled Polygon的更多相关文章

  1. POJ 2007 Scrambled Polygon 凸包

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7214   Accepted: 3445 ...

  2. POJ 2007 Scrambled Polygon [凸包 极角排序]

    Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8636   Accepted: 4105 ...

  3. POJ 2007 Scrambled Polygon 极角序 水

    LINK 题意:给出一个简单多边形,按极角序输出其坐标. 思路:水题.对任意两点求叉积正负判断相对位置,为0则按长度排序 /** @Date : 2017-07-13 16:46:17 * @File ...

  4. poj 2007 Scrambled Polygon(极角排序)

    http://poj.org/problem?id=2007 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6701   A ...

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

    题目传送门 题意:裸的对原点的极角排序,凸包貌似不行. /************************************************ * Author :Running_Time ...

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

    题目链接 题意 : 对输入的点极角排序 思路 : 极角排序方法 #include <iostream> #include <cmath> #include <stdio. ...

  7. poj 2007 Scrambled Polygon 极角排序

    /** 极角排序输出,,, 主要atan2(y,x) 容易失精度,,用 bool cmp(point a,point b){ 5 if(cross(a-tmp,b-tmp)>0) 6 retur ...

  8. POJ 2007 Scrambled Polygon 凸包点排序逆时针输出

    题意:如题 用Graham,直接就能得到逆时针的凸包,找到原点输出就行了,赤果果的水题- 代码: /* * Author: illuz <iilluzen[at]gmail.com> * ...

  9. poj 2007 Scrambled Polygon

    #include<stdio.h> #include<algorithm> using namespace std; #define Max 60 struct Point { ...

随机推荐

  1. B-dya6

    1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:在导入导出方面遇到了困难,导出的文件不能直接导入. 今天解决的进度:完成了登录页面的背景设计,并再次测试了整个系统的功能. 明天要做的事 ...

  2. 团队开发---”我爱淘“校园二手书店 NABC分析

    本项目特点之一:可预订 N:对于一些抢手的书可以提前预定,避免学生买不到书 A:网上下单,通过手机便捷购物 B:使得订书更加方便快捷 C:二手书摊.网上书店 团队成员:杨广鑫.郭健豪.李明.郑涛

  3. scrapy csvfeed spider

    class CsvspiderSpider(CSVFeedSpider): name = 'csvspider' allowed_domains = ['iqianyue.com'] start_ur ...

  4. 将数组写入Plist文件中

    -(void)writeToPlist:(NSArray *)uploadingfiles  Name:(NSString *)name {                  NSMutableArr ...

  5. 乐动力APP案例

    第一部分 调研, 评测 下载软件并使用起来,描述最简单直观的个人第一次上手体验. 这款软件的主界面功能还是比较完善,里面有多个关于运动相关的数据,还有一些推荐健身教程,记录功能也十分不错,其中最难理解 ...

  6. C# Unity游戏开发——Excel中的数据是如何到游戏中的 (四)2018.4.3更新

    本帖是延续的:C# Unity游戏开发--Excel中的数据是如何到游戏中的 (三) 最近项目不算太忙,终于有时间更新博客了.关于数据处理这个主题前面的(一)(二)(三)基本上算是一个完整的静态数据处 ...

  7. 微信支付get_brand_wcpay_request:fail

    最近做了微信支付功能,和后端一起踩坑中,微信一直报错:get_brand_wcpay_request:fail 出现该问题的原因: 1.生成的sign签名有问题 2.支付授权目录配置有问题 在经过仔细 ...

  8. JavaScript Cookie使用实例

    # Session-Cookie //  利用Cookie防止在1分钟内多次提交: function SetCookie (name, value) { var Days = 30; var exp ...

  9. 深入了解GOT,PLT和动态链接

    之前几篇介绍exploit的文章, 有提到return-to-plt的技术. 当时只简单介绍了 GOT和PLT表的基本作用和他们之间的关系, 所以今天就来详细分析下其具体的工作过程. 本文所用的依然是 ...

  10. elk调试环境

    http://10.110.22.30:9100/