P1359 租用游艇
题目链接
题目分类
区间动态规划
题解
#include<bits/stdc++.h>
using namespace std;
int n;
int r[210][210];
int dp[210][210];
int main()
{
cin>>n;
for(int i=1; i<=n; i++)//注意题目中的概念“半矩阵”
for(int j=i+1; j<=n; j++){
cin>>r[i][j];
dp[i][j]=r[i][j];//状态初始值
}
for(int d=3; d<=n; d++){//区间长度
for(int i=1; i<=n-d+1; i++){//状态起点
int j=i+d-1;//状态终点
for(int k=i+1; k<j; k++)//枚举决策点k
if(dp[i][j] > dp[i][k]+dp[k][j])//状态转移方程
dp[i][j] = dp[i][k]+dp[k][j];
}
}
cout<<dp[1][n];
return 0;
}