您的位置:首页 > Web前端

BZOJ 1633 [Usaco2007 Feb]The Cow Lexicon 牛的词典(单调DP)

2017-07-13 15:41 441 查看
【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=1633

【题目大意】

  给出一个字符串和一个字符串集,
  问要删去多少个字符该字符串才可以被字符串集完全表示

【题解】

  dp[i]表示长度为i时候的答案,单调dp即可

【代码】

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int N=1010;
char s
,c
[35];
int n,len,k,dp
;
int main(){
scanf("%d%d %s",&n,&len,s+1);
for(int i=1;i<=n;i++)scanf("%s",c[i]+1);
for(int i=1;i<=len;i++){
dp[i]=i;
for(int j=1;j<=n;j++){
int l=strlen(c[j]+1),cnt=0;
for(k=i;k;k--){
if(c[j][l]==s[k])l--;
else cnt++;
if(!l)break;
}if(!l)dp[i]=min(dp[i],dp[k-1]+cnt);
}
}printf("%d\n",dp[len]);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: