POJ 1696 Space Ant(點積的應用)

2021-09-30 16:19:43 字數 780 閱讀 2525

space ant

大意:有乙隻螞蟻,每次都只向當前方向的左邊走,問螞蟻走遍所有的點的順序輸出。開始的點是縱座標最小的那個點,開始的方向是開始點的x軸正方向。

思路:從開始點開始,每次找剩下的點中與當前方向所形成的夾角最小的點,為下乙個要走的點(好像就是犄角排序,我不是很會),夾角就是用點積除以兩個向量的距離,求一下acos值。

之前一直用叉積做,做了好久樣例都沒過,發現用錯了。。。 題目挺好的,有助於理解點積與叉積

struct point p[55], min;

double dmult(point p1, point p2, point p)

double distance(point a, point b)

int t;

int n;

bool vis[55];

void solve()

; for(int i = 1; i <= n; ++i)

}vis[min.id] = false;

point q = (point);

point h = min;

printf("%d %d ", n, min.id);

for(int i = 2; i <= n; ++i)

}vis[min.id] = false;

q = h;

h = min;

printf("%d", min.id);

printf("%s", i==n?"\n":" ");}}

}

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...