u027 神秘大三角

2021-09-28 10:05:21 字數 2257 閱讀 5034

time limit: 1 second

memory limit: 128 mb

判斷乙個點與已知三角形的位置關係。

前三行:每行乙個座標,表示該三角形的三個頂點 第四行:乙個點的座標,試判斷該點與前三個點圍成三角形的位置關係 (詳見樣例) 所有座標值均為整數。

若點在三角形內(不含邊界),輸出1; 若點在三角形外(不含邊界),輸出2; 若點在三角形邊界上(不含頂點),輸出3; 若點在三角形頂點上,輸出4。

對於100%資料,0<=所有點的橫、縱座標<=100

(0,0)

(3,0)

(0,3)

(1,1)

1
【題解】

判斷的優先順序如下:

1.和頂點重合。

2.和邊重合

3.在三角形內部

else

在三角形外部。

前3個種任意乙個成立。後續就不再判斷。直接結束程式了。

其中頂點只要和所有的點都比較一遍就可以了。

然後和邊重合的情況。只要把三條邊的直線方程求出來就可以了。代入看看x0,y0是否為這條邊的方程的乙個解,如果是乙個解,則這個點在邊上。直接輸出在邊上。

然後在三角形內部。

則這個點和三角形的三個頂點連線可以把大三角形分成3個小的三角形。

然後用海**式(知道3邊就能求三角形面積)算出三個小三角形的面積和。

//海**式,設三角形的周長的一半為p,三邊長為a,b,c;

//s=根號(p*(p-a)*(p-b)*(p-c));

看看這三個小的三角形的面積和與大三角形的面積是否是一樣的。如果是一樣的則這個點是在三角形的內部的。(如果不一樣則在三角形外部!);

因為是實數的運算。所以判斷相等要用差的絕對值小於精度來判斷。

【**】

#include #include #include int a[4][3],xx0,yy0;

void input_data(int &x, int &y)//輸入一行座標

for (int i = temp + 1; i <= len - 1; i++)

if (s[i] != ')')

y = y * 10 + s[i] - '0';//獲取y座標

else

break;

}double s_********(double a, double b, double c) //用海**式來算三角形的面積。

int main()

//在邊上。求出三條邊的直線方程。

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

for (int j = 1; j <= i - 1; j++)

}else

if (y2 == y1)//如果縱座標相同

}else //否則的話就直接按照兩點式的左右等式相同來判斷是否在點上

}} //在三角形內部。用海**式。把三角形分成三個小的三角形。看三個小的三角形和整個大的三角形面積是否一樣。

double s[5];

int num = 0;

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

for (int j = 1; j <= i - 1; j++)

double aa1, bb1, cc1;//然後是求出大三角形的面積

aa1 = sqrt((a[1][1] - a[2][1])*(a[1][1] - a[2][1]) + (a[1][2] - a[2][2])*(a[1][2] - a[2][2]));

bb1 = sqrt((a[1][1] - a[3][1])*(a[1][1] - a[3][1]) + (a[1][2] - a[3][2])*(a[1][2] - a[3][2]));

cc1 = sqrt((a[2][1] - a[3][1])*(a[2][1] - a[3][1]) + (a[2][2] - a[3][2])*(a[2][2] - a[3][2]));

s[4] = s_********(aa1, bb1, cc1);

s[0] = s[1] + s[2] + s[3];//把3個三角形的面積累加起來存在s[0]

double temp1 = s[4] - s[0];//如果s[0]和s[4]相同則輸出在三角形內部。

if (temp1 < 0)

temp1 = -temp1;

if (temp1 <= 0.0001)

//剩下一種情況就是在三角形外部啦。

printf("2");

return 0;

}

洛谷 P1355 神秘大三角

判斷乙個點與已知三角形的位置關係。若點在三角形內 不含邊界 輸出1 若點在三角形外 不含邊界 輸出2 若點在三角形邊界上 不含頂點 輸出3 若點在三角形頂點上,輸出4。非常簡單,只要你會 1.讀入,因為有括號,所以我只能先用字串讀,然後慢慢轉成數字。這一步注意,不要忘記資料裡有三位數,要打好相應的 ...

洛谷P1355 神秘大三角

題目描述 判斷乙個點與已知三角形的位置關係。輸入輸出格式 輸入格式 前三行 每行乙個座標,表示該三角形的三個頂點 第四行 乙個點的座標,試判斷該點與前三個點圍成三角形的位置關係 詳見樣例 所有座標值均為整數。輸出格式 若點在三角形內 不含邊界 輸出1 若點在三角形外 不含邊界 輸出2 若點在三角形邊...

神秘大三角 判斷點與三角形的關係

題目描述 判斷乙個點與已知三角形的位置關係。輸入輸出格式 輸入格式 前三行 每行乙個座標,表示該三角形的三個頂點 第四行 乙個點的座標,試判斷該點與前三個點圍成三角形的位置關係 詳見樣例 所有座標值均為整數。輸出格式 若點在三角形內 不含邊界 輸出1 若點在三角形外 不含邊界 輸出2 若點在三角形邊...