zoukankan      html  css  js  c++  java
  • E

    此题其实不用dp也可以,但是最经在学就用了!!!水。。。

     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int min (int x,int y)
     5 {
     6     return x<y?x:y;
     7 }
     8 int main ()
     9 {
    10     int T,n,dp[22][20],dp1[22][20];
    11     while(scanf("%d",&T)!=EOF)
    12     {
    13         for(int i=1;i<=T;i++)
    14         {
    15             scanf("%d",&n);
    16             memset(dp1,0,sizeof(dp));
    17             for(int j=1;j<=n;j++)
    18             for(int k=1;k<=3;k++)
    19             {
    20                scanf("%d",&dp[j][1<<k-1]);
    21                dp1[j][1<<k-1]=dp[j][1<<k-1];
    22             }
    23            for(int j=2;j<=n;j++)
    24            for(int k=1;k<=3;k++)
    25            for(int p=1;p<=3;p++)
    26            {
    27               if((1<<k-1)&(1<<p-1))continue;
    28               if(dp[j][(1<<p-1)]==dp1[j][(1<<p-1)]){dp1[j][(1<<p-1)]=dp1[j-1][(1<<k-1)]+dp1[j][(1<<p-1)];}
    29               else {dp1[j][(1<<p-1)]=min(dp1[j][(1<<p-1)],dp1[j-1][(1<<k-1)]+dp[j][(1<<p-1)]);}
    30            }
    31            int max1=20000;
    32            for(int j=1;j<=3;j++)
    33              if(dp1[n][1<<j-1]<max1)
    34                 max1=dp1[n][1<<j-1];
    35            printf("Case %d: ",i);
    36            printf("%d
    ",max1);
    37         }
    38     }
    39 }
  • 相关阅读:
    代码品质
    窖藏好题
    最后一次模拟
    几个有意思的题目
    【数组练习】
    【复习】图论
    【复习】后缀数组
    The Usage Of Difference Table
    【复习】NTT注意事项
    CF999E Reachability from the Capital
  • 原文地址:https://www.cnblogs.com/ace-top/p/3270801.html
Copyright © 2011-2022 走看看