UVA 1331 與幾何相關dp

2021-06-27 20:05:37 字數 1135 閱讀 2885

首先,來說以個問題;若該多邊形為凸多邊形的話,

那麼設 d(i,j)代表以i節點為起點以j為最後乙個點組成的多邊形的最大面積最小的剖分;

有狀態轉移式子 d(i,j) = min( d[i][j] , max( max(d(i,k),d(k,j) ),s(i,k,j) ))  (其中i但對於不是凸多邊形的話,上述式子在對k決策時,要額外滿足乙個條件i-->k,k-->j 兩條線段必須都是多邊形的對角線;

判斷是否為對角線的話

點是否在多邊形內部;

#include#include#include#include#include#include#includeusing namespace std;

int n;

const int inf = 1e9;

const int maxn = 55;

const double eps = 1e-10;

struct point

}a[maxn];

double cross(point a,point b)

double dot(point a,point b)

point operator *(point a,double c)

point operator -(point a,point b)

int dcmp(double x)

double ********area(point a,point b,point c)

bool segmentproperintersection(point a1,point a2,point b1,point b2)

/*not include point in each side;*/

bool ispointonsegment(point p,point a1,point a2)

int ispointinpolygon(point p)

if(wn !=0) return 1;

return 0;

}bool judge(int i,int j)

point temp;

double fenmu = 50.0;

for(int k=1;k<=40;k++)

else

int ok = 1;

for(int g=0;g

UVA 1331 三角剖分

題意 按照順時針或者逆時針的順序給出多邊的點,要將這個多邊形分解成n 2個三角形,要求使得這些三角行中面積最大的三角形面積盡量小,求最小值。分析 對於對角線不在多邊形內的點,其實不用考慮,只用判斷三角形內是否有其他點即可。includeusing namespace std define inf 0...

uva1331三角剖分

題意 輸入乙個簡單m 2 分析 每條對角線都是無序的,因此,給節點編號,從1到n 1,順時針方向,這樣多邊形的頂點都是有序的了,這樣就可劃分區間,類似區間dp來做。includeusing namespace std const int maxn 55 const double inf 0x3f3f...

UVA 1331 區間DP 三角剖分

題目文件 題目大意 按照順時針或者逆時針的順序給出多邊的點,要將這個多邊形分解成n 2個三角形,要求使得這些三角行中面積最大的三角形面積盡量小,求最小值。分析 設dp i j 為i,i 1,i 2,j 1這個多邊形的最大三角形面積的最小值,則很容易得出dp i j min dp i j max s ...