zoukankan      html  css  js  c++  java
  • poj 1696 极角排序(解题报告)

    #include<iostream>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    double eps=1e-8;
    int sgn(double x)
    {
        if(fabs(x)<=eps)return 0;
        if(x<0)return -1;
        return 1;
    }
    struct Point
    {
        double x,y;
        int index;
        Point (){}
        Point(double _x,double _y)
        {
            x=_x;
            y=_y;
        }
        Point operator -(const Point &b)const
        {
            return Point(x-b.x,y-b.y);
        }
        double operator *(const Point &b)const
        {
            return x*b.x+y*b.y;
        }
        double operator ^(const Point &b)const
        {
            return x*b.y-y*b.x;
        }
    };
    
    double dist(Point a,Point b)
    {
        return sqrt((a-b)*(a-b));
    }
    int pos;
    Point p[100];
    bool cmp(Point a,Point b)
    {
        double tmp=sgn((a-p[pos])^(b-p[pos]));
        if(tmp==0)return dist(a,p[pos])<dist(b,p[pos]);
        if(tmp<0)return false;
        return true;
    
    }
    
    int main ()
    {
        int T;
        cin>>T;
        int n;
        while(T--)
        {
            cin>>n;
            for(int i=0;i<n;i++)
            {
                cin>>p[i].index>>p[i].x>>p[i].y;
                if(p[i].y<p[0].y||(p[i].y==p[0].y&&p[i].x<p[0].x))
                    swap(p[0],p[i]);
            }
            pos=0;
            for(int i=1;i<n;i++)
            {
                sort(p+i,p+n,cmp);//这里是i,排序i后的点
                pos++;
            }
            cout<<n;
            for(int i=0;i<n;i++)
                cout<<' '<<p[i].index;
            cout<<endl;
        }
    
        return 0;
    
    }

    题意:有一个蚂蚁。在一个平面上吃植物,这个蚂蚁只能往左走,求蚂蚁最多能吃到多少植物,并将路线输出

    转化:最多能将所有的植物都吃完。只要绕最外边一圈逆时针往前走,一直走到最里边的 一个植物即可

    通过极角排序,先按照左下角植物排序,绕逆时针依次为极点进行排序,排到最后一个点输出即可

  • 相关阅读:
    CodeSmith功能和技巧收集
    简繁转换js兼容各种浏览器
    40 个轻量级 JavaScript 库
    AJAX处理Session
    对项目管理的几点认识(转)
    extjs
    数据采集需要的方法
    JavaScript 浮动定位提示效果
    一个类别表设计
    ExtJS 源码剖析 —— Ext类
  • 原文地址:https://www.cnblogs.com/zwx7616/p/11219392.html
Copyright © 2011-2022 走看看