link
乍一看好像沒什麼思路,但是不難看出每次找乙個點,就會把當前區間分成兩半,分開求兩個區間在加上斷開的代價就是整個區間的代價了
那就區間dp唄(見下圖)
我們用f[l][r]表示點l,l+1,l+2....r-1,r的劃分最小代價
也就是多邊形(l,l+1),(l+1,l+2)...(r-1,r),(r,l)的劃分代價
嗯...大概就是這樣
/*
陣列沒開夠,爆零兩行淚
ll開成 int,爆零兩行淚
多組忘清空,爆零兩行淚
dp 沒初值,爆零兩行淚
深搜沒邊界,爆零兩行淚
廣搜忘出隊,爆零兩行淚
輸入沒加 &,爆零兩行淚
模數沒看見,爆零兩行淚
-1 不輸出,爆零兩行淚
越界不特判,爆零兩行淚
空間開一倍,爆零兩行淚
無向變有向,爆零兩行淚
題意沒審清,爆零兩行淚
檔名起錯,爆零兩行淚
除錯忘刪除,爆零兩行淚
檔案不儲存,爆零兩行淚
檔案不讀入,爆零兩行淚
檔案不輸出,爆零兩行淚
*/#include
using
namespace std;
const
int n=
55,m=35;
int n;
int w[n]
,f[n]
[n];
intmain()
printf
("%d\n"
,f[1
][n]);
return0;
}
/*
陣列沒開夠,爆零兩行淚
ll開成 int,爆零兩行淚
多組忘清空,爆零兩行淚
dp 沒初值,爆零兩行淚
深搜沒邊界,爆零兩行淚
廣搜忘出隊,爆零兩行淚
輸入沒加 &,爆零兩行淚
模數沒看見,爆零兩行淚
-1 不輸出,爆零兩行淚
越界不特判,爆零兩行淚
空間開一倍,爆零兩行淚
無向變有向,爆零兩行淚
題意沒審清,爆零兩行淚
檔名起錯,爆零兩行淚
除錯忘刪除,爆零兩行淚
檔案不儲存,爆零兩行淚
檔案不讀入,爆零兩行淚
檔案不輸出,爆零兩行淚
*/#include
using
namespace std;
const
int n=
55,m=35;
typedef
long
long ll;
int n;
ll w[n]
,f[n]
[n][m]
,temp[m]
;void
add(ll a[
],ll b)
memcpy
(a,c,
sizeof
(c))
;return;}
void
mul(ll a[
],ll b)
memcpy
(a,c,
sizeof
(c))
;return;}
intcmp
(ll a[
],ll b)
void
print
(ll a)
intmain()
}print
(f[1
][n]);
return0;
}
劃分凸多邊形
時間限制 800ms 記憶體限制 65535k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 問題描述 乙個正凸n邊形,可以用n 3條互不相交的對角線將正n邊形分成n 2個三角形。現在要求讀入n邊形的n n 20 輸出不同劃分方法的總數 要求解的是劃分方法數,而不需要輸出各種...
469 凸多邊形
題目描述 給定乙個按順序連線的多邊形的頂點,判斷該多邊形是否為凸多邊形。凸多邊形的定義 注 頂點個數至少為 3 個且不超過 10,000。座標範圍為 10,000 到 10,000。你可以假定給定的點形成的多邊形均為簡單多邊形 簡單多邊形的定義 換句話說,保證每個頂點處恰好是兩條邊的匯合點,並且這些...
驗證多邊形是否為凸多邊形
驗證多邊形是否為凸多邊形 2108 shape of hdu include define debug 0 int crossmulti int x0,int y0,int x1,int y1,int x2,int y2 int main int n,i int f x,f y 第1個點 int s...