• HDU 5903 (DP)


    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    const int maxn = 1e3+5;
    int dp[maxn][maxn];
    char s1[maxn];
    char p[maxn];
    int main()
    {
        int T;cin>>T;
        while(T--)
        {
            int n,m;
            scanf("%d %d",&n,&m);
            scanf("%s",s1); //dp[i][j],i表示当前位置,j表示当前花费是否合法。
            memset(dp,0,sizeof(dp));
            dp[n/2][0] = 1;
            for(int i=n/2;i>=0;i--)
            {
                if(s1[i]==s1[i+n/2])
                {
                    for(int j=m;j>=0;j--)
                    {
                        if(dp[i+1][j]) dp[i][j] = 1; //不改
                    }
                    for(int j=m;j>=2;j--)
                    {
                        if(dp[i+1][j-2]) dp[i][j] = 1; //改两次
                    }
                }
                else
                {
                    for(int j=m;j>=1;j--)
                    {
                        if(dp[i+1][j-1]) dp[i][j] = 1; //改一次
                    }
                    for(int j=m;j>=2;j--)
                    {
                        if(dp[i+1][j-2]) dp[i][j] = 1; //改两次
                    }
                }
            }
            if(!dp[0][m])
            {
                printf("Impossible
    ");
                continue;
            }
            for(int i=0;i<n/2;i++)
            {
                for(int j=0;j<26;j++)
                {
                    int count1 = 0;
                    char now = j+'a';
                    if(now!=s1[i]) count1++;
                    if(now!=s1[i+n/2]) count1++;
                    if(dp[i+1][m-count1])
                    {
                        p[i] = j+'a';
                        p[i+n/2] = j+'a';
                        m = m-count1;
                        break;
                    }
                }
            }
            p[n] = '';
            printf("%s
    ",p);
        }
        return 0;
    }
  • 相关阅读:
    ●单例模式
    ●扩展方法
    ●存储过程比sql语句慢
    ●rownum() over()
    ●日期格式化
    ●sql优化
    VS建立Web网站 20141201
    ORM操作(一) 20141128
    流的操作20141104
    控件:菜单、工具栏、状态栏及TreeView的操作 20141103
  • 原文地址:https://www.cnblogs.com/littlepear/p/5919588.html
Copyright © 2020-2023  润新知