zoukankan      html  css  js  c++  java
  • BZOJ 1296 粉刷匠

    挺烦的一个dp,要注意一下细节。。。

    貌似我的dp和网上的有点不一样?

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #define maxn 55
    #define maxt 2505
    using namespace std;
    int n,m,t,map[maxn][maxn],f[maxn][maxt],g[maxn][maxt],dp[maxt];
    int r1,r2; 
    char s[maxn];
    int main()
    {
        scanf("%d%d%d",&n,&m,&t);
        for (int i=1;i<=n;i++)
        {
            scanf("%s",s);
            for (int j=1;j<=m;j++)
            {
                if (s[j-1]=='0') map[i][j]=0;
                else map[i][j]=1;
            }
        }
        for (int i=1;i<=n;i++)
        {
            memset(f,0,sizeof(f));memset(g,0,sizeof(g));
            f[1][1]=1;g[1][1]=1;if (map[i][1]==0) r1=1,r2=0;else r1=0,r2=1;
            for (int j=2;j<=m;j++)
            {
                for (int k=1;k<=j;k++)
                {
                    if (!map[i][j]) f[j][k]=f[r1][k]+1;
                    else f[j][k]=f[r2][k]+1;
                    f[j][k]=max(f[j][k],g[j-1][k-1]+1);
                    g[j][k]=max(g[j-1][k],f[j][k]);
                }
                if (!map[i][j]) r1=j;else r2=j;
            }
            for (int j=t;j>=0;j--)
                for (int k=0;k<=j;k++)
                    dp[j]=max(dp[j],dp[j-k]+g[m][k]);
        }
        printf("%d
    ",dp[t]);
        return 0;
    }
  • 相关阅读:
    UVA10891
    UVA10453
    UVA 10201
    UVA10154
    UVA11137
    UVA10617
    UVA10271
    UVA10739
    UVA10306
    节流防抖
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/6013315.html
Copyright © 2011-2022 走看看