poj 2007 Scrambled Polygon

原创 2016年08月31日 09:07:09

链接


题意:

给出凸包上的一些点,现在需要你按逆时针排序输出,并且输出的第一个点是(0,0)


解法:

极角排序

#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;

#define all(x) (x).begin(), (x).end()
#define sqr(x)  ((x)*(x))
#define for0(a, n) for (int (a) = 0; (a) < (n); (a)++)
#define for1(a, n) for (int (a) = 1; (a) <= (n); (a)++)
#define mes(a,x,s)  memset(a,x,(s)*sizeof a[0])
#define mem(a,x)  memset(a,x,sizeof a)
#define ysk(x)  (1<<(x))
typedef long long ll;
typedef pair<int, int> pii;
const int INF =0x3f3f3f3f;
const int maxn=100    ;
const double eps=1e-10;

int dcmp(double x)
{
    if(fabs(x)<eps)  return 0;
    else return x<0?-1:1;
}

struct Point
{
    double x,y;
    Point(double x=0,double y=0):x(x),y(y) {};
    bool operator ==(const Point B)const {return dcmp(x-B.x)==0&&dcmp(y-B.y)==0;}

    bool operator<(const Point& b)const
    {
        return dcmp(x-b.x)<0|| dcmp(x-b.x)==0 &&dcmp(y-b.y)<0;
    }
};
typedef Point Vector;
Vector operator -(Vector A,Vector B) {return Vector(A.x-B.x,A.y-B.y); }
double Cross(Vector A,Vector B)
{
    return A.x*B.y-A.y*B.x;
}


double dis(Point A,Point B)
{
    return sqrt(sqr(A.x-B.x)+sqr(A.y-B.y));
}
Point p[maxn+10];int n;
bool cmp(const Point &a, const Point &b)//逆时针排序
{
      int ret=dcmp(Cross(a-p[0],b-p[0]));
      if(ret)  return ret>0;
      return dis(a,p[0])<dis(b,p[0]);

}

int main()
{
   std::ios::sync_with_stdio(false);
   double x,y;n=0;
   while(cin>>x>>y)
   {
       p[n++]=Point(x,y);
   }
    sort(p+1,p+n,cmp);
    for0(i,n) printf("(%.0f,%.0f)\n",p[i].x,p[i].y);
   return 0;
}



poj 2007 Scrambled Polygon(凸多边形顶点输出)

题目:http://poj.org/problem?id=2007 描述:从(0,0)点开始输入一个凸多边形,这个凸多边形,占有三个象限,按照逆时针的方式输出各定点。       输...
  • u010064842
  • u010064842
  • 2013年05月11日 14:30
  • 1490

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

题意:如题 用Graham,直接就能得到逆时针的凸包,找到原点输出就行了,赤果果的水题~ 代码: /* * Author: illuz * Blog: http://bl...
  • hcbbt
  • hcbbt
  • 2013年11月14日 19:14
  • 1577

Java代码混淆----ZKM

下面一段文字摘自《Java 手机/PDA 程序设计入门》一书,可以做为混淆器性能的大致观点: 笔者没用过DashO,所以无法对其作出个人评价。所以现在仅说明笔者曾用过的产品。以笔者的个人观点,如果就混...
  • zwx622
  • zwx622
  • 2014年06月19日 14:00
  • 1517

poj 2007 Scrambled Polygon [极角排序]

题目链接:点击打开链接
  • u011394362
  • u011394362
  • 2014年07月21日 09:18
  • 735

ACM-计算几何之Scrambled Polygon——poj2007

ACM 计算几何 Scrambled Polygon poj2007 几种极角排序
  • lx417147512
  • lx417147512
  • 2014年04月27日 20:15
  • 1534

POJ 2007 Scrambled Polygon 极角排序

题目描述:http://poj.org/problem?id=2007
  • f_cpp
  • f_cpp
  • 2014年11月09日 17:25
  • 183

POJ 2007 Scrambled Polygon(凸包)

Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 7568 ...
  • acm_BaiHuzi
  • acm_BaiHuzi
  • 2015年08月11日 23:42
  • 623

POJ-2007 Scrambled Polygon(计算几何)

Scrambled Polygon Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8217 ...
  • huatian5
  • huatian5
  • 2016年07月28日 20:47
  • 174

poj 2007 Scrambled Polygon

题意:给你一个封闭的凸多边形上的顶点,按逆时针方向输出顶点。 分析:该开始以为是求凸包,后来发现题目给你的就是凸包,只是点的顺序打乱了,用叉积排序后,输出即可。 以下附上代码: #includ...
  • u011251225
  • u011251225
  • 2015年06月02日 15:47
  • 237

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

POJ 2007 Scrambled Polygon(计算几何 叉积排序啊)
  • u012860063
  • u012860063
  • 2015年05月22日 19:36
  • 802
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 2007 Scrambled Polygon
举报原因:
原因补充:

(最多只允许输入30个字)