凸多邊形的劃分

2022-08-04 10:24:12 字數 667 閱讀 4630

有乙個\(n\)個頂點的多邊形,每個頂點都有乙個權值,求如何劃分使得劃分後的\(n-2\)個三角形的權值乘積和最小。

這題本意是要寫高精度的,不過這不是重點。我們考慮用\(f[i][j]\)表示以\(i\)和\(j\)之間的頂點所構成的多邊形的最小權值乘積和,那麼我們考慮作為\((i,j)\)這條邊,必定有乙個頂點與這條邊形成乙個三角形,我們列舉這個點,就把這個多邊形分成了兩個多邊形,再加上這個三角形堆答案的貢獻即可。

#include using namespace std;

typedef __int128 ll;

ll read()

while(ch>='0'&&ch<='9')

return res*w;

}void write(ll x)

if(x>9)write(x/10);

putchar(x%10+'0');

}void writeln(ll x)

ll f[110][110],a[110];

int main()

ll ans=f[1][n];

for(int i=1;i<=n;i++)

ans=min(ans,f[i][i+n-1]);

write(ans);

return 0;

}

劃分凸多邊形

時間限制 800ms 記憶體限制 65535k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 問題描述 乙個正凸n邊形,可以用n 3條互不相交的對角線將正n邊形分成n 2個三角形。現在要求讀入n邊形的n n 20 輸出不同劃分方法的總數 要求解的是劃分方法數,而不需要輸出各種...

凸多邊形的劃分

給定乙個具有 n 個頂點的凸多邊形,將頂點從 1 至 n 標號,每個頂點的權值都是乙個正整數。將這個凸多邊形劃分成 n 2 個互不相交的三角形,對於每個三角形,其三個頂點的權值相乘都可得到乙個權值乘積,試求所有三角形的頂點權值乘積之和至少為多少。輸入格式 第一行包含整數 n,表示頂點數量。第二行包含...

凸多邊形的劃分

給定乙個具有 n 個頂點的凸多邊形,將頂點從 1 至 n 標號,每個頂點的權值都是乙個正整數。將這個凸多邊形劃分成 n 2 個互不相交的三角形,對於每個三角形,其三個頂點的權值相乘都可得到乙個權值乘積,試求所有三角形的頂點權值乘積之和至少為多少。輸入格式 第一行包含整數 n,表示頂點數量。第二行包含...