zoukankan      html  css  js  c++  java
  • [luoguP2875] [USACO07FEB]牛的词汇The Cow Lexicon(DP)

    传送门

    f[i] 表示前 i 个字符去掉多少个 的最优解

    直接暴力DP

    ——代码

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <iostream>
     4 
     5 int n, m, cnt, f[301];
     6 char s[301], a[601][26];
     7 
     8 inline int read()
     9 {
    10     int x = 0, f = 1;
    11     char ch = getchar();
    12     for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
    13     for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
    14     return x * f;
    15 }
    16 
    17 inline int min(int x, int y)
    18 {
    19     return x < y ? x : y;
    20 }
    21 
    22 int main()
    23 {
    24     int i, j, k, l;
    25     n = read();
    26     m = read();
    27     scanf("%s", s + 1);
    28     for(i = 1; i <= n; i++) scanf("%s", a[i] + 1);
    29     for(i = 1; i <= m; i++)
    30     {
    31         f[i] = i;
    32         for(j = 1; j <= n; j++)
    33         {
    34             cnt = 0;
    35             l = strlen(a[j] + 1);
    36             for(k = i; k; k--)
    37             {
    38                 if(a[j][l] == s[k]) l--;
    39                 else cnt++;
    40                 if(!l) break;
    41             }
    42             if(k) f[i] = min(f[i], f[k - 1] + cnt);
    43         }
    44     }
    45     printf("%d
    ", f[m]);
    46     return 0;
    47 }
    View Code
  • 相关阅读:
    CF 319C
    日常---区域赛临近
    poj 3728 The merchant 倍增lca求dp
    zoj 3742 Delivery 好题
    zoj 3717 Balloon 2-sat
    CF 163E. e-Government ac自动机+fail树+树状数组
    CF 335B
    hdu 4739 状压DP
    hdu 4738 桥
    Hibernate中的继承映射
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/6907022.html
Copyright © 2011-2022 走看看