FZU 2148 求n個點構成的凸四邊形的個數

2021-07-31 20:44:00 字數 1042 閱讀 7059

題目的大致意思就是給你n個點。讓你計算這個點可以構成的凸四邊形的個數。

看到乙個超級厲害的解法。就是道理其實都懂可是我就是沒想到。所以覺得他厲害吧。

對於乙個凹四邊形來說。把各個頂點相連。就會得到三個三角形。這三個三角形的面積加和就等於大三角形的面積。凸三角形就不行。自己畫畫就能想到了。

直接上**吧。

#include 

#include

#include

#include

using

namespace

std;

struct pointarr[35];

double area(int a,int b,int c)

int judge(int a,int b,int c,int d)

return1;}

int main()

int ans=0;

for(int i=0;ifor(int j=i+1;jfor(int k=j+1;kfor(int l=k+1;lif(judge(i,j,k,l)&&judge(i,j,l,k)&&judge(j,l,k,i)&&judge(i,l,k,j))}}

}}

printf("case %d: %d\n",++kase,ans);

}return

0;}

關於那個三角形面積計算公式啊。

就是可以用三個點的座標就可以求面積。

設a(x1,y1),b(x2,y2),c(x3,y3)

由a–>b–>c–>a 按逆時針方向轉。(行列式書寫要求)

設三角形的面積為s

則s=(1/2)*(下面行列式)

|x1 y1 1|

|x2 y2 1|

|x3 y3 1|

s=(1/2)*(x1y2*1+x2y3*1+x3y1*1-x1y3*1-x2y1*1-x3y2*1)

即用三角形的三個頂點座標求其面積的公式為:

s=(1/2)*(x1y2+x2y3+x3y1-x1y3-x2y1-x3y2)

求任意個點的凸包問題

凸包 convex hull 是乙個計算幾何 圖形學 中的概念。在乙個實數 向量空間 v中,對於給定集合x,所有包含x的 凸集 的 交集 s被稱為x的凸包。x的凸包可以用x內所有點 x1,xn 的 線性組合 來構造.在二維歐幾里得空間 中,凸包可想象為一條剛好包著所有點的橡皮圈。用不嚴謹的話來講,給...

N個點求最大的四邊形面積

題意 平面上n個點 n 300 問任意四個點組成的四邊形 保證四條邊不相交 的最大面積是多少。分析 1 第一思路是列舉四個點,以o n4 的演算法妥妥超時。2 以下思路源自官方題解 以o n2 列舉每一條邊,以這條邊作為四邊形的對角線 注意 這裡所說的對角線是指把四邊形分成兩部分的線,不考慮凹四邊形...

平面上N個點,求斜率最大的那條直線通過的兩點

平面上n個點,每兩個點都確定一條直線,求出斜率最大的那條直線所通過的兩個點 斜率不存在的情況不考慮 時間效率越高越好。關於這道題,網上已經給出了解答要點 3個點a,b,c,把它們的按x座標排序。假設排序後的順序是abc,那麼有兩種情況 1.abc共線,則k ab k bc k ac 2.abc不共線...