凸多邊形三角劃分

2022-05-05 17:45:11 字數 1212 閱讀 4855

傳送門

(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,則分割成的兩個區域分別為...