poj1696Space Ant(逆時針螺旋形)

2022-05-15 22:20:21 字數 1405 閱讀 1495

鏈結

貪心做法,沒次找最外面的點,也就是相對前面那條線偏轉角度最小的點,除第乙個點需要找到最下面的點即y座標最小,其餘的每次進行極角排序。

1 #include 2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include

10using

namespace

std;

11#define n 55

12#define ll long long

13#define inf 0xfffffff

14const

double eps = 1e-8;15

const

double pi = acos(-1.0

);16

const

double inf = ~0u>>2;17

int o[55

];18

struct

point

1922

intid;

23}p[n];

24int

cc;25

typedef point pointt;

26 pointt operator +(point a,point b)

2730 pointt operator -(point a,point b)

3134

double

dis(point a)

3538

intcross(point a,point b)

3942

intmul(point p0,point p1,point p2)

4346

47bool

cmp(point a,point b)

4854

intmain()

5565

int tmp = 1;66

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

67if(p[tmp].y>p[i].y)

6871 swap(p[1

],p[tmp]);

72int g = 0

;73 o[++g] = p[1

].id;

74 cc = 1;75

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

7681 printf("%d"

,g);

82for(i = 1 ;i <= g; i++)

83 printf("%d"

,o[i]);

84 puts(""

);85}86

return0;

87 }

view code

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