計算幾何基礎 《演算法競賽入門經典》

2022-06-01 02:57:12 字數 1257 閱讀 9976

#includeusing namespace std;

const int n=1e3;

struct point //建構函式,方便**編寫

};struct polygon;

struct circle;

typedef point vector;

//程式上實現向量與點的結構體相同,一組(x,y)可以代表一點點或者乙個向量,目前不做嚴格的區分

//過載實現基本運算

vector operator + (vector a,vector b) //向量相加

vector operator - (vector a,vector b) //向量相減

vector operator * (vector a,double b) //向量乘以乙個數

vector operator / (vector a,double b) //向量除以乙個數

const double eps=1e-10;

int dcmp(double x)

bool operator == (const point&a,const point &b)

/*向量的點積(又叫 標積 / 內積 / 數量積 /),a·b=|a||b|·cosθ

幾何意義:向量a在向量b方向上的投影與向量b的模的乘

座標公式:a.x*b.x+a.y*b.y; */

double dot(vector a,vector b) //向量點積

double length(vector a) //求向量長度(通過點積)

double angle(vector a,vector b) //求向量夾角(單位為弧度)

/*向量的叉積(又叫 矢積 / 外積 / 向量積 /),a×b=|a||b|·sinθ

幾何意義:垂直a、b所在,向量a,b構成的平行四邊形的面積

座標公式: a.x*b.y-b.x*a.y */

double cross(vector a,vector b) //向量叉積

/*向量旋轉 公式 x=x'*cos(rad)-y'*sin(rad) y=x'*sin(rad)+y'*cos(rad) rad為要旋轉的角度(單位為弧度)*/

vector rotate(vector a,double rad)

/*計算向量的單位法線 ,左轉90度,長度歸一*/

vector normal(vector a)

int main()

演算法競賽入門經典 C 入門

include 提供輸入輸出流 include 提供常用演算法 using namespace std const int maxn 100 10 int a maxn int main return0 宣告陣列時,陣列大小可以用const宣告的常數。在c 中,這樣的寫法更加推薦。include i...

演算法競賽入門經典 1

想著要學演算法已經很長時間了,但一直都是有問題自己想,很少受 正規軍 編排,網上關於演算法的書倒是不少,其一必推 演算法導論 還有一本 演算法競賽入門經典 作者劉汝佳,好了,步入正題,兩天時間從第一章到第三章結尾,算是對c又進行了一遍複習,說一下新得 3d 3d 03d 知道它們的區別嗎,在呼叫pr...

演算法競賽入門經典 WERTYU

題目描述 把手放在鍵盤上時,稍不注意就會往右錯一 位。這樣,輸入q會變成輸入w,輸入j會變成輸 入k等。鍵盤如圖3 2所示。輸入乙個錯位後敲出的字串 所有字母均 大寫 輸出打字員本來想打出的句子。輸入保 證合法,即一定是錯位之後的字串。例如輸入中不會出現大寫字母a。樣例輸入 o s,gomr ypf...