poj 1696 Space Ant (極角排序)

2021-08-31 00:01:04 字數 826 閱讀 6537

題意:是給你n個點,乙隻螞蟻要從y座標最小的那個點開始,逆時針依次走過所有的點,要求不能走之前走過的點,螞蟻只能逆時針(向左轉)前進。

題解:極角排序一下,每次出發都取左偏量最小的跑。

///極角排序,每次出發都取左偏量最小的點

#include#include#include#includeusing namespace std;

struct point

point(double _x,double _y)

}node[100];

point operator + (point a,point b)

point operator - (point a,point b)

point operator * (point a,double p)

point operator / (point a,double p)

bool operator < (const point &a,const point &b) ///兩點之間的距離

double cross(point a,point b)

int pos; ///極角排序時的根據

bool cmp(point a,point b)

int main()

pos=0;

for(int i=1;iprintf("%d ",n);

for(int i=0;iprintf("%d ",node[i].index);

puts("");

}return 0;

}

POJ 1696 Space Ant 計算幾何

題意 給出一系列二維點,問從 0,y 出發,y是這些點裡縱座標的最小值,只能左轉或者直走,並且每個點只能走一次,輸出能走完這些點的路徑的順序。題解 先找到第乙個點,它肯定是當y取最小時的那個點,然後接下來開始遍歷,每次找的點與pre連成的線都要與pre和first連成的線的夾角最小,找到後就更新fi...

poj 1696 Space Ant 有關極角

題意 從最低的點開始,不能向右拐,問能經過多少點?能定是經過所有點了 從最低點開始,求與其極角最小的點,作為新的起點,在需找與這個點成極角最小的點,依次即可 include includestruct point dian 60 int n int dis point a,point b int c...

poj 1696 Space Ant 卷包裹法

首先好好研究卷包裹法的思路,發現每一plant一定是可以走到的。這篇文章寫的很好 這裡 然後就是把這些點的標號存起來啦,因為不是求點的座標,要儲存原來的標號,所以弄了乙個struct 作為對映原來的標號用。bool 陣列依舊用來表示是否已經被加入 卷包裹遍歷集合 include include in...