zoukankan      html  css  js  c++  java
  • lightoj1047 【简单线性DP】

    因为写不出hdu3401...好像要用单调队列优化...这边水了一个...

    题意:
    给n个房子涂色,给出n个房子对应颜色的花费,问涂完所有颜色花费最少。
    保证相邻房子颜色不能相同。
    思路:
    dp[i][j] 表前i个房子,第i个房子是j颜色的最少花费;

    #include<bits/stdc++.h>
    using namespace std;
    int dp[2][3];
    int a,b,c,n;
    
    int main()
    {
        int T,cas=1;
        scanf("%d",&T);
        while(T--)
        {
            int now=0;
            memset(dp,0,sizeof(dp));
            scanf("%d",&n);
            for(int i=0;i<n;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                now=1-now;
                dp[now][0]=min(dp[1-now][1],dp[1-now][2])+a;
                dp[now][1]=min(dp[1-now][0],dp[1-now][2])+b;
                dp[now][2]=min(dp[1-now][0],dp[1-now][1])+c;
            }
            printf("Case %d: %d
    ",cas++,min(dp[now][0],min(dp[now][1],dp[now][2])));
        }
        return 0;
    }
    


  • 相关阅读:
    38
    37
    学记
    36.java_exception_test
    c++中enum的用法——枚举类型
    35
    34
    33
    32
    31
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777475.html
Copyright © 2011-2022 走看看