51nod 1021【区间DP】
2016-10-12 23:07
169 查看
思路:
dp[ i ] [ j ]代表取[ i ,j ]区间石子的最小值,然后dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);
dp[ i ] [ j ]代表取[ i ,j ]区间石子的最小值,然后dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);
#include <cstdio> #include <cstring> #include <cstdlib> #include <algorithm> #include <queue> using namespace std; const int INF=0x3f3f3f3f; const int N=1e2+10; int a ; int sum ; int dp ; int n; int main() { scanf("%d",&n); sum[0]=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; } for(int i=1;i<=n;i++) dp[i][i]=0; for(int len=2;len<=n;len++) { for(int i=1;i<=n-len+1;i++) { int j=i+len-1; dp[i][j]=INF; for(int k=i;k<j;k++) dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]); } } printf("%d\n",dp[1] ); return 0; }
相关文章推荐
- 51Nod - 1021 石子归并 区间DP入门-分析
- 51nod 1021 石子归并(区间dp)
- 【51Nod】1021 - 石子归并(区间dp & 四边形不等式优化)
- 51nod 1021 石子归并(区间dp 详细解释)
- 51Nod - 1021 区间dp
- 51Nod - 1021石子归并(区间DP)
- 经典问题二.【区间dp】石子归并 51nod 1021
- 1021区间dp-51nod
- 51nod 1092【区间dp】
- 51nod 1092 回文字符串(区间dp)
- 51nod 1021 石子归并(dp-矩阵连乘)
- 【51nod】1022 石子归并V2 区间DP
- 51nod oj 1021 石子归并【区间dp】
- 1021 石子归并 (区间dp)
- 51nod 1021 石子归并(基础dp)
- 51Nod - 1021 石子归并(经典dp)
- 51nod 1052 最大M子段和 (区间dp)
- 51nod 1092 回文字符串 LCS 或 区间dp
- 1021 石子归并(区间DP)@
- 1021 石子归并 区间dp