首页 > 代码库 > [luoguP2875] [USACO07FEB]牛的词汇The Cow Lexicon(DP)

[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\n", f[m]);46     return 0;47 }
View Code

 

[luoguP2875] [USACO07FEB]牛的词汇The Cow Lexicon(DP)