题面

第一次做Trie上dp,感谢 @i207M 的资瓷

对子串们建立一棵Trie,设$dp[i][j]$表示到母串第$i$位为止在$Trie$上的$j$号节点时的最小修改数量,然后就可以枚举母串各位与Trie的节点dp了。

首先有两个显然的转移

$dp[i+1][j]=min(dp[i+1][j],dp[i][j]+1)$(将当前字符认为是噪音,继续考虑下一位)

$dp[i+1][son[s[i+1]]]=min(dp[i+1][son[s[i+1]]],dp[i][j])$(在Trie上匹配一个)

然后发现并不对......

事实上还有一个转移,当我们匹配完一个子串时,我们又回到了Trie的根节点,即对于每个结束节点$j$有

$dp[i][0]=min(dp[i][0],dp[i][j])$

好像凉了,转移回根节点就出环了。不过事实上只需要单独把根节点拿出来最后转移即可,就是在每一位转移结束后讨论一下根节点的情况

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=,L=;
int trie[M*L][],las[M],dp[N][M*L];
char talk[N],word[M][L];
int n,m,tot,ans=1e9;
bool ed[M*L];
void Insert(char *s,int id)
{
int len=strlen(s),nde=;
for(int i=;i<len;i++)
{
int val=s[i]-'a'+;
if(!trie[nde][val])
trie[nde][val]=++tot;
nde=trie[nde][val];
}
las[id]=nde,ed[nde]=true;
}
int main ()
{
scanf("%d%d%s",&n,&m,talk+);
for(int i=;i<=m;i++)
talk[i]=talk[i]-'a'+;
for(int i=;i<=n;i++)
scanf("%s",word[i]),Insert(word[i],i);
memset(dp,0x3f,sizeof dp),dp[][]=;
for(int i=;i<=m;i++)
{
for(int j=;j<=tot;j++)
{
dp[i+][j]=min(dp[i+][j],dp[i][j]+);
if(ed[j]) dp[i][]=min(dp[i][],dp[i][j]);
int nde=trie[j][(int)talk[i+]];
if(nde) dp[i+][nde]=min(dp[i+][nde],dp[i][j]);
}
dp[i+][]=min(dp[i+][],dp[i][]+);
int nde=trie[][(int)talk[i+]];
if(nde) dp[i+][nde]=min(dp[i+][nde],dp[i][]);
}
printf("%d",dp[m][]);
return ;
}

解题:USACO07FEB The Cow Lexicon的更多相关文章

  1. bzoj1633 / P2875 [USACO07FEB]牛的词汇The Cow Lexicon

    P2875 [USACO07FEB]牛的词汇The Cow Lexicon 三维dp 它慢,但它好写. 直接根据题意设三个状态: $f[i][j][k]$表示主串扫到第$i$个字母,匹配到第$j$个单 ...

  2. 洛谷P2875 [USACO07FEB]牛的词汇The Cow Lexicon

    P2875 [USACO07FEB]牛的词汇The Cow Lexicon 题目描述 Few know that the cows have their own dictionary with W ( ...

  3. POJ3267——The Cow Lexicon(动态规划)

    The Cow Lexicon DescriptionFew know that the cows have their own dictionary with W (1 ≤ W ≤ 600) wor ...

  4. POJ3267 The Cow Lexicon(DP+删词)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9041   Accepted: 4293 D ...

  5. POJ 3267 The Cow Lexicon

    又见面了,还是原来的配方,还是熟悉的DP....直接秒了... The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submis ...

  6. POJ 3267:The Cow Lexicon(DP)

    http://poj.org/problem?id=3267 The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submi ...

  7. The Cow Lexicon

    The Cow Lexicon Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8815 Accepted: 4162 Descr ...

  8. HDOJ-三部曲-1015-The Cow Lexicon

    The Cow Lexicon Time Limit : 4000/2000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) To ...

  9. poj3267--The Cow Lexicon(dp:字符串组合)

    The Cow Lexicon Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8211   Accepted: 3864 D ...

随机推荐

  1. Linux系统下搭建FTP/SFTP服务器

    传输文件经常使用ftp和sftp服务器.Windows下有多种可视化工具,使用快捷.Linux经常需要自行搭建这两种服务器,当然搭建熟练的话,会更加快捷. 1.检查Linux系统是否安装了vsftp和 ...

  2. ats Linux Bridge内联

    Linux可以配置为在桥接模式下运行. 为网桥分配了两个或更多物理接口. 在接口之间共享单个IP地址. 默认情况下,任何到达一个接口的数据包都会立即路由到另一个网桥接口. 需要的Linux包: bri ...

  3. PHP字符编码转换库iconv的一个细节

    先来看代码 <?php $charset = 'GBK'; $str = '中华人民共和国中华人民共和国中华人民共和国中华人民共和国'; ; $str2 = iconv('UTF-8', $ch ...

  4. django之基本配置

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  5. 团队作业 & alpha最终测试报告

    本次ALPHA版本测试是依据Daily Scrum11.16(http://www.cnblogs.com/newbe/p/4101339.html)分配的任务有序进行的,从11.16~11.23.为 ...

  6. cnblogs用户体验及建议

    一.是否提供了良好的体验给用户(同时提供价值)? 我觉得博客园还是给用户提供了良好的用户体验的,它可以从用户的角度考虑,用户在注册的时候,用户自己在设置用户名和密码的时候,如果与他人重复会有提示,而且 ...

  7. web12 使用map型的request、session、application

    电影网站:www.aikan66.com 项目网站:www.aikan66.com 游戏网站:www.aikan66.com 图片网站:www.aikan66.com 书籍网站:www.aikan66 ...

  8. C# winForm调用WebService

    C#winForm调用WebService的远程接口 创建一个WebService工程用例 添加服务引用 添加webService服务地址 输入命名空间名称 主要代码 测试成功截图 工程代码下载 新建 ...

  9. 福大软工 Alpha 事后诸葛亮

    写在前面 林燊大哥 一路走来,好不容易,终于完结了. 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题 用户在进店之前无法得知店铺的优劣 ...

  10. 福大软工1816 · 评分结果 · Alpha冲刺答辩总结

    作业地址:https://edu.cnblogs.com/campus/fzu/Grade2016SE/homework/2462 作业提交准则 按时交 - 有分 晚交 - 0分 迟交一周以上 - 倒 ...