POJ 1696 極角排序

2021-07-22 16:57:01 字數 1006 閱讀 1532

題目中指定了ant爬行時的幾種規則,從中我們可以知道ant是按照當前所處位置,對其他的plant進行極角排序後,選擇角度最小過去,重複,一直到走到最後乙個plant。

sort一發就可以了

#include 

#include

#include

#include

#include

const

double eps=1e-8;

const

int maxn=50+5;

using

namespace

std;

int n; //點的個數

int sgn(double x)

struct point

point(int _x,int _y)

};typedef point vector;

vector

operator + (vector a,vector b)

vector

operator - (point a,point b)

intoperator ^ (vector a,vector b)

intoperator * (vector a,vector b)

double dis(point a,point b)

point p[maxn];

int q[maxn];

int pos,cnt;

bool cmp(point a,point b) //極角排序函式

void init()

void solve()

}int main()

init();

solve();

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

printf("(%d,%d)\n",p[i].x,p[i].y);*/

cout

printf(" %d",q[i]);

cout

0;}

極角排序 POJ1696

vj題目連線 一種奇怪的蟲子不能右轉且走過路線之間不能有交點,吃植物才能存活,給出植物的座標,求蟲子要怎樣走才能活得最久 吃的植物越多活越久 輸入 樣例數,n組樣例,每組給出乙個n,然後n行每行給出3個數,分別是植物編號 植物x座標 植物y座標 輸出 能吃的最大植物數目,並給出路線 因為蟲子只能左轉...

poj1696(極角排序,貪心)

恢復內容開始 題意 有n個點,規定起點,每次只能向左走,不能與之前的路徑交叉,求最多能經過幾個點。思路 其實這題因為起點的y座標最小,那麼經過的點數一定就是所有的點數n,然後顯然我們優先選擇偏移角度最小的點作為後繼,也就是極角最小,那麼每次選擇乙個點後都按極角公升序排一次即可。我的 是遍歷了一遍,因...

POj 1696 Space Ant (極角排序)

題意 乙隻螞蟻,只會向左轉,現在給出平面上很多個點,求解一種走法,能使得螞蟻能經過的點最多,每個頂點該螞蟻只能經過一次,且所行走的路線不能發生交叉.對於題目所輸入的點,先找出最左下方的頂點 即縱座標最小的頂點 然後對剩下的頂點按照對與左下點的極角排序,然後反覆找最左下的點,反覆進行極角排序,同時記錄...