有乙個\(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,表示頂點數量。第二行包含...