1.題目鏈結。題目大意,給3n個點,把這3n個點劃分成n個三角形。題目資料保證存在一組解。輸出每個三角形所使用的點的下標。
2.找到左下角(其他地方也行)的乙個點,然後以這個點為極角排序,極角排序之後相鄰的三個點劃分成一組即可。
#include #define maxn 4005
#pragma warning(disable:4996)
typedef long long ll;
using namespace std;
const double eps = 1e-8;
struct point
point(int _x, int _y)
};point p[maxn];
int pos;
double cross(double x1, double y1, double x2, double y2)
double compare(point a, point b, point c)//計算極角
bool cmp(point a, point b)
int main()
} sort(p + 1, p + 3 * n, cmp);
int cnt = 1;
for (int i = 0; i < 3 * n; i++)
}} return 0;
}
極角排序詳解
極角排序詳解 名詞釋義 在平面內取乙個定點o,叫極點,引一條射線ox,叫做極軸,再選定乙個長度單位和角度的正方向 通常取逆時針方向 對於平面內任何一點m,用 表示線段om的長度 有時也用r表示 表示從ox到om的角度,叫做點m的極徑,叫做點m的極角,有序數對 就叫點m的極座標 四種極角排序 詳解 s...
極角排序理解
這裡我們說的極角排序,指的是對於二維座標中的點,當然也可以說是向量。極角排序的用途一般是預處理二維平面中的點,使之變得相對有序,接下來在有序的條件小用o n 或者o nlogn 處理,而不是無序條件下的o n n 的列舉。應用鏈結 關於叉積 叉積 0是指兩向量平行 重合 叉積 0,則向量a在向量b的...
HDU 5738 Eureka 極角排序,注意讀題
題目大意 平面給n 1000個座標,每個座標值範圍在 1e9,1e9 之間 問,隨便取一些點集,使得點集內的點,在一條直線上,有多少種方案。方法 按照x,y座標排序。x相同,y從小到大。這樣,我們從最左邊的點開始,讓這個點固定下來,求這個點必須取的情況下,在這個點的右邊 和上方 的直線中有多少方案。...