zoukankan      html  css  js  c++  java
  • cf100989b

    http://codeforces.com/gym/100989/my

    B. LCS (B)
    time limit per test
    0.25 seconds
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    Although Haneen was able to solve the LCS problem, Dr. Ibrahim is suspicious about whether she really understands the LCS problem or not. He believes that she can't write the code on her own, but can only translate the LCS pseudo-code given in class into C++ code without really understanding how it works. Here is the pseudo-code Dr. Ibrahim gave in class:

    function LCS (A[1..R], B[1..C])
    DP = array(0..R, 0..C)
    for i := 0..R
    DP[i,0] = 0
    for j := 0..C
    DP[0,j] = 0
    for i := 1..R
    for j := 1..C
    if A[i] = B[j]
    DP[i,j] := DP[i-1,j-1] + 1
    else
    DP[i,j] := max(DP[i,j-1], DP[i-1,j])
    return DP[R,C]

    To verify that Haneen understands the LCS problem, Dr. Ibrahim asked her to solve the following problem:

    After running the above LCS code on two strings A and B, the 2D array DP is filled with values. Given the 2D array DP, can you guess what A and B are? Any two strings A and B that will produce the given table and contain only lowercase English letters are acceptable.

    Can you help Haneen solve this problem?

    Input

    The first line of input contains two integers R and C (1 ≤ R, C ≤ 25), the length of the strings A and B, respectively.

    Each of the following R + 1 lines contains C + 1 integers, these lines represent the 2D array DP.

    It's guaranteed that the given table was produced by running the algorithm on two strings that contain only lowercase English letters.

    Output

    Print string A on the first line and string B on the second line. Both strings should contain only lowercase English letters.

    Example
    input
    3 4
    0 0 0 0 0
    0 0 1 1 1
    0 0 1 1 2
    0 1 1 1 2
    output
    abc
    cadb
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <vector>
    #include <string>
    #include <iostream>
    #include <sstream>
    #include <map>
    #include <set>
    #include <queue>
    #include <stack>
    #include <fstream>
    #include <numeric>
    #include <iomanip>
    #include <bitset>
    #include <list>
    #include <stdexcept>
    #include <functional>
    #include <utility>
    #include <ctime>
    
    
    #define PB push_back
    #define MP make_pair
    #define FOR1(n) for(int i=0;i<(n);++i)
    #define FOR2(l,h) for(int i=(l);i<=(h);++i)
    #define FOR3(h,l) for(int i=(h);i>=(l);--i)
    
    using namespace std;
    typedef vector<int> VI;
    typedef vector<string> VS;
    typedef vector<double> VD;
    typedef long long LL;
    typedef pair<int,int> PII;
    
    #define PI acos((double)-1)
    #define E exp(double(1))
    #define K 1000000+9
    char a[100],b[100];
    int dp[100][100],n,m;
    bool us[100];
    int main(void)
    {
        cin>>n>>m;
        for(int i=1; i<=n; i++)
            a[i]='a'+i-1;
        for(int i=0; i<=n; i++)
            for(int j=0; j<=m; j++)
                scanf("%d",&dp[i][j]);
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
            {
                if( dp[i][j]==dp[i-1][j-1]+1&&dp[i][j]!=max(dp[i-1][j],dp[i][j-1]))
                {
                    if(!us[j])
                    {b[j]=a[i];us[j]=1;}
                    else
                    {
                        char t=a[i];
                        for(int k=1; k<=n; k++)if(a[k]==t)a[k]=b[j];
                        for(int k=1; k<=m; k++)if(b[k]==t)b[k]=b[j];
                    }
                }
            }
        for(int i=1; i<=m; i++)
            if(!us[i])b[i]='z';
        a[n+1]='',b[m+1]='';
        cout<<a+1<<endl<<b+1<<endl;
        return 0;
    }
    

      

  • 相关阅读:
    python计算机视觉项目实践
    Codeforces Round #256 (Div. 2) B (448B) Suffix Structures
    SonarLint插件的安装与使用
    后缀表达式求值
    有用代码段2
    提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释
    Intellij Idea搭建Spark开发环境
    代码备忘, TODO宏实现
    浏览器自己主动填表安全漏洞:查看浏览器保存的password
    PDO 查询mysql返回字段整型变为String型解决方法
  • 原文地址:https://www.cnblogs.com/weeping/p/5662654.html
Copyright © 2011-2022 走看看