• Codeforces 682 D. Alyona and Strings (dp)


    题目链接:http://codeforces.com/contest/682/problem/D

    给你两个字符串,求两个字符串中顺序k个的相同子串 长度之和。(注意是子串)

    dp[i][j][k][0] 表示a[i] == a[j]时,a字符串前i个和b字符串前j个,顺序k个相同的子串 长度之和

    dp[i][j][k][1] 表示a[i] != a[j]时,顺序k个相同子串的长度之和

    dp[i][j][k][0] = max(dp[i - 1][j - 1][k][0], dp[i - 1][j - 1][k - 1][1], dp[i - 1][j - 1][k - 1]) + 1;

    dp[i][j][k][1] = max(dp[i - 1][j][k][1], dp[i][j - 1][k][1], dp[i][j][k][0], dp[i - 1][j][k][0], dp[i][j - 1][k][0]);

    渣代码...

     1 //#pragma comment(linker, "/STACK:102400000, 102400000")
     2 #include <algorithm>
     3 #include <iostream>
     4 #include <cstdlib>
     5 #include <cstring>
     6 #include <cstdio>
     7 #include <vector>
     8 #include <cmath>
     9 #include <ctime>
    10 #include <list>
    11 #include <set>
    12 #include <map>
    13 using namespace std;
    14 typedef long long LL;
    15 typedef pair <int, int> P;
    16 const int N = 1e3 + 5;
    17 char str1[N], str2[N];
    18 int dp[N][N][11][2];
    19 
    20 int main()
    21 {
    22     int n, m, k;
    23     scanf("%d %d %d", &n, &m, &k);
    24     scanf("%s %s", str1, str2);
    25     for(int i = 1; i <= n; ++i) {
    26         for(int j = 1; j <= m; ++j) {
    27             for(int s = 1; s <= k; ++s) {
    28                 if(str1[i - 1] == str2[j - 1]) {
    29                     dp[i][j][s][0] = max(max(dp[i - 1][j - 1][s - 1][1], dp[i - 1][j - 1][s][0]), 
    30                         dp[i - 1][j - 1][s - 1][0]) + 1;
    31                 }
    32                 dp[i][j][s][1] = max(max(dp[i - 1][j][s][1], dp[i][j - 1][s][1]), 
    33                     max(dp[i - 1][j][s][0], dp[i][j - 1][s][0]));
    34                 dp[i][j][s][1] = max(dp[i][j][s][0], dp[i][j][s][1]);
    35             }
    36         }
    37     }
    38     printf("%d
    ", dp[n][m][k][1]);
    39     return 0;
    40 }
  • 相关阅读:
    lr http_get访问webservice
    lr http_post请求webservice
    快速幂(fast power)
    运算符重载
    1010 Radix 二分
    1054 The Dominant Color
    1042 Shuffling Machine
    1059 Prime Factors
    1061 Dating
    1078 Hashing
  • 原文地址:https://www.cnblogs.com/Recoder/p/5888716.html
Copyright © 2020-2023  润新知