zoukankan      html  css  js  c++  java
  • 【UOJ #519 查查查乐乐】 DP

    【美团杯2020】查查查乐乐

    题意

    给出t个包含字符,‘x’,‘l’的字符串。

    现在把x修改为l,把l修改为x,现在要保证不包含“xxxll”的子序列,问最少需要修改多少次?

    题解

    (dp[i][j])表示在前i个字符串中,出现的最长的xxxll的子序列的长度。

    比如:x是1,xx是2,xxx是3,xxl是2

    转移方程:

    if str[i]=='xxxll'[j]:
    	dp[i][j+1]=min(dp[i][j+1],dp[i-1][j])//不修改,长度会增加
        dp[i][j]=min(dp[i-1][j]+1,dp[i][j])//修改,次数增加,长度不变
    else :
    	dp[i][j]=min(dp[i][j],dp[i-1][j])//没有必要修改
    

    代码

    /*Gts2m ranks first*/
    #define pb push_back
    #define stop system("pause")
    #include<stdio.h>
    #include<string.h>
    #include<queue>
    #include<stack>
    #include<math.h>
    #include<vector>
    #include<map>
    #include<set>
    #include<bitset>
    #include<string>
    #include<algorithm>
    #include<iostream>
    // #include<bits/stdc++.h>
    using namespace std;
    const int N=2e5+10;
    const int inf=0x3f3f3f3f;
    typedef long long ll;
    typedef unsigned long long ull;
    
    char com[10]={'x','x','x','l','l'};
    char str[110];
    int dp[110][10];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%s",str+1);
            int len=strlen(str+1);
            memset(dp,inf,sizeof(dp));
            dp[0][0]=0;
            for(int i=1;i<=len;i++)
            {
                for(int j=0;j<5;j++)
                {
                    if(str[i]==com[j])
                    {
                        dp[i][j+1]=min(dp[i][j+1],dp[i-1][j]);
                        dp[i][j]=min(dp[i-1][j]+1,dp[i][j]);
                    }
                    else dp[i][j]=min(dp[i][j],dp[i-1][j]);
                }
            }
            int ans=inf;
            for(int i=0;i<5;i++) ans=min(ans,dp[len][i]);
            printf("%d
    ",ans);
        }
        return 0;
    }
    
  • 相关阅读:
    SQL 耗时优化
    Visual Studio 使用 Web Deploy 发布远程站点
    Windows API 调用示例
    Windows Server 2016 配置 IIS 的详细步骤
    SQL Server 游标的使用示例
    IIS 常用命令
    Nginx的使用和配置
    Nginx安装和配置
    mysql中关于时间的总结
    时间格式转换
  • 原文地址:https://www.cnblogs.com/valk3/p/12908883.html
Copyright © 2011-2022 走看看