D题:
题意:给定一个具有 N个顶点的凸多边形,将顶点从1 至N 标号,每个顶点的权值都是一个正整数。 将这个凸多边形划分成N−2个互不相交的三角形,试求这些三角形顶点的权值乘积和至少为多少。
思路:区间dp,记f[i][j]为从顶点i到顶点j的答案,则
#include <bits/stdc++.h>
using namespace std;
struct node{
int a[1100],len;
node(){
memset(a,0,sizeof(a));
len=0;
}
void init_maxn(){
len=1000;a[len]=9;
}
node operator = (int b){
if (b==0) len=1;
while (b){
a[++len]=b%10;
b/=10;
}
return *this;
}
node operator = (node b){
memcpy(a,b.a,sizeof(a));
len=b.len;
return *this;
}
node operator + (node b){