• Cake slicing UVA


     UVA - 1629

    ans[t][b][l][r]表示t到b行,l到r列那一块蛋糕切好的最小值
    d[t][b][l][r]表示t到b行,l到r列区域的樱桃数,需要预处理

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 using namespace std;
     5 int d[21][21][21][21];
     6 int ans[21][21][21][21];
     7 int n,m,k,cse;
     8 int init(int t,int b,int l,int r)
     9 {
    10     if(d[t][b][l][r]!=-1)    return d[t][b][l][r];
    11     int m1;
    12     if(b-t>r-l)
    13     {
    14         m1=(t+b)>>1;
    15         return d[t][b][l][r]=init(t,m1,l,r)+init(m1+1,b,l,r);
    16     }
    17     else
    18     {
    19         m1=(l+r)>>1;
    20         return d[t][b][l][r]=init(t,b,l,m1)+init(t,b,m1+1,r);
    21     }
    22 }
    23 int dp(int t,int b,int l,int r)
    24 {
    25     if(ans[t][b][l][r]!=0x3f3f3f3f)    return ans[t][b][l][r];
    26     if(d[t][b][l][r]==1)    return ans[t][b][l][r]=0;
    27     int i;
    28     for(i=t;i<b;i++)
    29         if(d[t][i][l][r]&&d[i+1][b][l][r])
    30             ans[t][b][l][r]=min(ans[t][b][l][r],dp(t,i,l,r)+dp(i+1,b,l,r)+r-l+1);
    31     for(i=l;i<r;i++)
    32         if(d[t][b][l][i]&&d[t][b][i+1][r])
    33             ans[t][b][l][r]=min(ans[t][b][l][r],dp(t,b,l,i)+dp(t,b,i+1,r)+b-t+1);
    34     return ans[t][b][l][r];
    35 }
    36 int main()
    37 {
    38     int i,j,t1,t2,i1,j1;
    39     while(scanf("%d%d%d",&n,&m,&k)==3)
    40     {
    41         memset(d,-1,sizeof(d));
    42         memset(ans,0x3f,sizeof(ans));
    43         for(i=1;i<=n;i++)
    44             for(j=1;j<=m;j++)
    45                 d[i][i][j][j]=0;
    46         for(i=1;i<=k;i++)
    47         {
    48             scanf("%d%d",&t1,&t2);
    49             d[t1][t1][t2][t2]=1;
    50         }
    51         for(i=1;i<=n;i++)
    52             for(j=1;j<=m;j++)
    53                 for(i1=i;i1<=n;i1++)
    54                     for(j1=j;j1<=m;j1++)
    55                         init(i,i1,j,j1);
    56         printf("Case %d: %d
    ",++cse,dp(1,n,1,m));
    57     }
    58     return 0;
    59 }

     

  • 相关阅读:
    词法分析程序
    关于编译原理
    超神c语言文法
    linux基本命令
    用bat来注册ocx
    当web配置文件 appSettings配置的东西越来越多时,可以拆开了。
    MVC的URL路由规则
    ASP.NET MVC 中如何实现基于角色的权限控制
    查cc攻击
    关于session介绍
  • 原文地址:https://www.cnblogs.com/hehe54321/p/7346444.html
Copyright © 2020-2023  润新知