zoukankan      html  css  js  c++  java
  • HDU You Are the One (dp)

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 const int Ni = 105;
     6 const int inf = 1<<27;
     7 int n,num[Ni],sum[Ni],d[Ni][Ni];
     8 inline int min(int a,int b) {return a<b? a:b;}
     9 int dp(int i,int j)
    10 {
    11     int ans=inf;
    12     if(d[i][j]!=inf) return d[i][j];
    13     if(i==j) return d[i][j]=0;
    14     d[i+1][j]=dp(i+1,j);
    15     ans=min(ans,d[i+1][j]+sum[j]-sum[i]);
    16     ans=min(ans,d[i+1][j]+num[i]*(j-i));
    17     for(int k=i+1;k<j;k++)
    18     {
    19         d[i+1][k]=dp(i+1,k);
    20         d[k+1][j]=dp(k+1,j);
    21         ans=min(ans,d[i+1][k]+d[k+1][j]+num[i]*(k-i)
    22                 +(sum[j]-sum[k])*(k-i+1));
    23     }
    24     return d[i][j]=ans;
    25 }
    26 int main()
    27 {
    28     int t,i,j,cs=1;sum[0]=0;
    29     scanf("%d", &t);
    30     while(t--)
    31     {
    32         scanf("%d",&n);
    33         for (i=1;i<=n;i++)
    34         {
    35             scanf("%d",num+i);
    36             sum[i]=sum[i-1]+num[i];
    37         }
    38         for (i=1;i<=n;i++)
    39             for (j=1;j<=n;j++) d[i][j]=inf;
    40         printf("Case #%d: %d\n",cs++,dp(1,n));
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    1.14 作业
    1.12作业
    1.9 作业 矩阵转置与输出九宫格
    1.8 作业
    1.7 作业 打印菱形
    1.5 作业
    1.4作业 不同的年龄,不同的问候语
    PHP语言 -- 发起流程
    PHP语言 -- 新建流程
    PHP语言 -- 权限
  • 原文地址:https://www.cnblogs.com/qijinbiao/p/2679456.html
Copyright © 2011-2022 走看看