天天看點

洛谷 P1174 打磚塊

->題目連結

洛谷 P1174 打磚塊
洛谷 P1174 打磚塊

題解:

一道dp好題。

#include<cstdio>
#include<iostream>
using namespace std;
int a[210][210],s1[210][210],s2[210][210],dp1[210][210],dp2[210][210],n,m,k;
bool vis[210][210];
int main(){
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            char ch[11];
            scanf("%d%s",&a[i][j],ch);
            if(ch[0]=='Y') vis[i][j]=true;
    }
    for(int i=1;i<=m;i++){
        int cnt=0;
        for(int j=n;j>=1;j--)
            if(vis[j][i]) s1[i][cnt]+=a[j][i];
            else s1[i][++cnt]=s2[i][cnt]=s1[i][cnt-1]+a[j][i];
    }
    for(int i=1;i<=m;i++)
        for(int j=0;j<=k;j++)
            for(int g=0;g<=n&&g<=j;g++){
                dp1[i][j]=max(dp1[i][j],dp1[i-1][j-g]+s1[i][g]);
                if(g>0) dp2[i][j]=max(dp2[i][j],dp1[i-1][j-g]+s2[i][g]);
                if(j-g>0) dp2[i][j]=max(dp2[i][j],dp2[i-1][j-g]+s1[i][g]);
            }
    printf("%d\n",dp2[m][k]);
    return 0;
}      

AC

于2018.10.20:

莫名其妙,不知道為什麼,原本AC的題目重新交上居然全WA了。

兩個月前:

洛谷 P1174 打磚塊
洛谷 P1174 打磚塊
洛谷 P1174 打磚塊

現在:

洛谷 P1174 打磚塊
洛谷 P1174 打磚塊
洛谷 P1174 打磚塊

然後AC

#include<cstdio>
#include<iostream>
using namespace std;
int a[210][210],s1[210][210],s2[210][210],dp1[210][210],dp2[210][210],n,m,k;
bool vis[210][210];
int main(){
    scanf("%d%d%d",&n,&m,&k);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            char ch[11];
            scanf("%d%s",&a[i][j],ch);
            if(ch[0]=='Y') vis[i][j]=true;
    }
    for(int i=1;i<=m;i++){
        int cnt=0;
        for(int j=n;j>=1;j--)
            if(vis[j][i]) s1[i][cnt]+=a[j][i];
            else ++cnt,s1[i][cnt]=s2[i][cnt]=s1[i][cnt-1]+a[j][i];
    }
    for(int i=1;i<=m;i++)
        for(int j=0;j<=k;j++)
            for(int g=0;g<=n&&g<=j;g++){
                dp1[i][j]=max(dp1[i][j],dp1[i-1][j-g]+s1[i][g]);
                if(g>0) dp2[i][j]=max(dp2[i][j],dp1[i-1][j-g]+s2[i][g]);
                if(j-g>0) dp2[i][j]=max(dp2[i][j],dp2[i-1][j-g]+s1[i][g]);
            }
    printf("%d\n",dp2[m][k]);
    return 0;
}      

一個人的夜,我的心應該放在哪裡。

轉載于:https://www.cnblogs.com/GTBD/p/9435663.html