傳送門
(loj公升級版)
這道題雖然是基礎的區間dp,但是還是很值得一說的。
我們用dp[i][j]表示第i個點到第j個點劃分的最大值。注意我們只列舉了兩個端點,第三個頂點是我們列舉的那個k,之後發現k這個頂點可以把整個區間分成兩塊,我們就可以進行區間dp了。
只不過這道題要使用高精度。需要自己過載一下,對於賦inf值的話,我們直接把長度設為極大值即可。(好像還能用int128過)
看一下**。
#include#include#include
#include
#include
#include
#include
#define rep(i,a,n) for(int i = a;i <= n;i++)
#define per(i,n,a) for(int i = n;i >= a;i--)
#define enter putchar('\n')
using
namespace
std;
typedef
long
long
ll;const
int m = 10005
;const ll inf = 1000000009
;ll read()
while(ch >= '
0' && ch <= '9'
)
return ans *op;
}struct
big
void
modi(ll g)
while(g) f[len++] = g % 10,g /= 10
;
while(!f[len] && len > 0) len--;
}big
operator * (const big &g) const
big
operator + (const big & g) const
void
print()
}dp[
105][105],a[105
];ll n,x;
big bmin(
const big &a,const big &b)
intmain()
}dp[
1][n].print();
return0;
}
凸多邊形三角劃分(HNOI 97)
一 試題描述 給定乙個具有n n 50 個頂點 從1到n編號 的凸多邊形,每個頂點的權均已知。問如何把這個凸多邊形劃分成n 2個互不相交的三角形,使得這些三角形頂點的權的乘積之和最小?輸入檔案 第一行 頂點數n 第二行n個頂點 從1到n 的權值 輸出格式 最小的和的值 各三角形組成的方式 輸入示例 ...
劃分凸多邊形
時間限制 800ms 記憶體限制 65535k 提交次數 0 通過次數 0 題型 程式設計題 語言 g gcc vc 問題描述 乙個正凸n邊形,可以用n 3條互不相交的對角線將正n邊形分成n 2個三角形。現在要求讀入n邊形的n n 20 輸出不同劃分方法的總數 要求解的是劃分方法數,而不需要輸出各種...
凸多邊形區域劃分為三角形問題
rt 乙個凸多邊形區域,有n條邊,將其劃分為三角形區域,問共有多少種分割方法。1.我們從最簡單情況開始 n 3,f 3 1 2.當n 4,f 4 2 3.n邊時 我們從節點1開始考慮,要想分割成三角形區域,1不能和與它相鄰的點連線,所以1可以連線3,4,n 1 假設1連線i,則分割成的兩個區域分別為...