Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)D(思维,DP,字符串)

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)D(思维,DP,字符串)相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;
char c[2007][2007];
char ans[4007];
int s[2007][2007];
int main(){
    memset(s,-1,sizeof(s));
    int n,k;
    scanf("%d%d",&n,&k);
    getchar();
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            scanf("%c",&c[i][j]);
        }
        getchar();
    }
    s[1][1]=k;//初始可改变的次数
    char mn=0;
    char tmp=0;
    for(int i=1;i<=n*2-1;i++){
        mn=‘z‘;
        for(int j=1;j<=i;j++){
            if(j>n||i-j+1>n)
                continue;
            if(s[j][i-j+1]>-1){//可达位置
                tmp=c[j][i-j+1];
                if(tmp!=‘a‘&&s[j][i-j+1]>0)//改变机会未用完
                    tmp=‘a‘;
                mn=min(mn,tmp);
            }
        }
        ans[i]=mn;//i可走到的位置的最小值
        for(int j=1;j<=i;j++){
            if(j>n||i-j+1>n)
                continue;
            if(s[j][i-j+1]>-1){
                tmp=c[j][i-j+1];
                if(tmp!=‘a‘&&s[j][i-j+1]>0){//贪心,前面有机会能变a就变
                    tmp=‘a‘;
                    s[j][i-j+1]--;
                }
                if(tmp==mn){//可行出路之一
                    if(j<n)
                        s[j+1][i-j+1]=max(s[j+1][i-j+1],s[j][i-j+1]);//走改变少的路
                    if(i-j+1<n)
                        s[j][i-j+2]=max(s[j][i-j+2],s[j][i-j+1]);//走改变少的路
                }
            }
        }
        printf("%c",ans[i]);
    }
    return 0;
}





















































以上是关于Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)D(思维,DP,字符串)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #517 (Div. 2, based on Technocup 2019 Elimination Round 2)D(思维,DP,字符串)

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力

Codeforces Round #726 (Div. 2) B. Bad Boy(贪心)

Codeforces Global Round 19