题目大意:给定有ABC组成的串n个,然后请你生成一个长度为K的串求给定的串在生成串中最多被匹配时的次数

输入

3 7
ABA
CB
ABACB

输出:

4

题目解析:这道题目就是对于每一个节点每次处理下一个(第N+1)个是什么字母,然后每次匹配确定当前字符一定有用(一定存在下一个模式串)然后进行匹配的同时进行DP就行了(保证每个节点到根的串被匹配否则不就浪费长度了么。。)

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <queue>
#include <iostream>
using namespace std;
#define rep(i,k) for(int (i)=1;(i)<=(k);(i)++)
#define repz(i,k) for(int (i)=0;(i)<(k);(i)++)
const int MAXN = 20;
const int MAXK = 1000;
struct State{int fail, flag;int ch[3];
}p[MAXN*15+30];
int scnt, Bef[MAXN*15+30];
void Add(char *s){int now = 0, len = strlen(s);repz(i, len){if(!p[now].ch[s[i]-'A'])p[now].ch[s[i]-'A'] = ++scnt;now = p[now].ch[s[i]-'A'];}p[now].flag++;
}
void _initTree(){queue<int> que;repz(i, 3)if(p[0].ch[i])que.push(p[0].ch[i]);while(!que.empty()){int u = que.front();que.pop();repz(i, 3) if(p[u].ch[i]){int v = p[u].ch[i];que.push(v);int k = p[u].fail;while(k && !p[k].ch[i]) k = p[k].fail;p[v].fail = p[k].ch[i];Bef[v] = p[p[v].fail].flag > 0 ? p[v].fail : Bef[p[v].fail];}}
}
int dp[MAXK+10][MAXN*15+30];
void match(int len){memset(dp, -1, sizeof dp);dp[0][0] = 0;queue<pair<int, int> > que;que.push(make_pair(0, 0));pair<int, int> tmp;while(!que.empty()){tmp = que.front(); que.pop();int u = tmp.first;int ru = u, i = tmp.second;if(i == len) break;repz(ids, 3){u = ru;if(p[u].ch[ids])u = p[u].ch[ids];else{int k = p[u].fail;while(k && !p[k].ch[ids]) k = p[k].fail;u = p[k].ch[ids];}if(!u) continue;int k = u, sum = 0;while(k){sum += p[k].flag;k = Bef[k];}if(dp[i][ru] + sum > dp[i+1][u]){dp[i+1][u] = dp[i][ru] + sum;que.push(make_pair(u, i+1));}}}int ans = 0;scnt++;repz(i, scnt)ans = max(ans, dp[len][i]);printf("%d\n", ans);
}
int main(){int n, k;char s[40];scanf("%d%d", &n, &k);rep(i, n){scanf("%s", s);Add(s);}_initTree();match(k);return 0;
}

【AC自动机】[UESTC 554][USACO 2012]Video Game Combos相关推荐

  1. 【AC自动机+DP】[USACO JAN2012 GOLD Problem 1: Video Game Combos]

    题目大意 题目大意:给定有ABC组成的串n个,然后请你生成一个长度为K的串求给定的串在生成串中最多被匹配时的次数 分析 AC自动机模板题. 构建trie,然后DP. p是当前节点,l是已经构造的串的长 ...

  2. 【AC自动机+DP】USACO2012 JAN GOLD_Video Game Combos

    [题目大意] 给你个模式串(每个长度≤15,1≤N≤20),串中只含有三种字母.求一长度为K(1≤K≤1000)的字符串,使得匹配数最大(重复匹配计多次),输出最大值. [解题思路] W老师给的题,然 ...

  3. 提高篇 第二部分 字符串算法 第4章 AC自动机

    https://blog.csdn.net/wangyh1008/article/details/81428056 [模板]AC自动机(加强版) 洛谷3796 AC自动机_A_loud_name-CS ...

  4. CDOJ1633 Video Game Combos [AC自动机+dp]

    题目地址:http://acm.uestc.edu.cn/problem.php?pid=1633 AC自动机+BFS AC自动机,参见:http://www.cnblogs.com/luna-lov ...

  5. P3041 [USACO12JAN]Video Game Combos【AC自动机+DP】

    时空限制 1000ms / 128MB 题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', an ...

  6. BZOJ3075[USACO 2013 Mar Gold 3.Necklace]——AC自动机+DP

    题目描述 给你一个长度为n的字符串A,再给你一个长度为m的字符串B,求至少在A中删去多少个字符才能使得B不是A的子串.注:该题只读入A和B,不读入长度,先读入A,再读入B.数据保证A和B中只含小写字母 ...

  7. [Bzoj3940] [AC自动机,USACO 2015 February Gold] Censor [AC自动机模板题]

    AC自动机模板题(膜jcvb代码) 1 #include <iostream> 2 #include <algorithm> 3 #include <cstdio> ...

  8. BZOJ 4327 【JSOI 2012】 玄武密码 AC自动机+dfs

    题目描述 在美丽的玄武湖畔,鸡鸣寺边,鸡笼山前,有一块富饶而秀美的土地,人们唤作进香河.相传一日,一缕紫气从天而至,只一瞬间便消失在了进香河中.老人们说,这是玄武神灵将天书藏匿在此.  很多年后,人们 ...

  9. [USACO 2012 January Gold] Video Game Combos

    题目描述 贝西在玩电脑游戏!在游戏中,键盘的'A','B'和'C'三个按键是唯一可用的.贝西可以根据她的需要随意按这几个键.但是游戏里只有N(1 <= N<= 20)种招式.一个招式命令就 ...

最新文章

  1. 这50位青年科学家,腾讯每人给300万
  2. prefixspan是挖掘频繁子序列,子序列不一定是连续的,当心!!!
  3. PPT图标的正确使用和插入与编辑形状
  4. DllImport的用法
  5. good-Windows下搭建PHP开发环境(Apache+PHP+MySQL)
  6. [Unity] FlowCanvas 使用注意事项
  7. 海思加鸿蒙的零距离思考,自主生态之路在何方
  8. Apache RewriteCond %{REQUEST_FILENAME} 不起作用问题
  9. 易被忽视的贝叶斯概率
  10. Hibernate查询 内连接和外连接区别
  11. 一个悄然成为世界最流行的操作系统
  12. 作业5(《构建之法》心得体会)
  13. 13. JavaScript 字符串(String)对象
  14. mathtype 转换 matlab,MathType和Mathematica之间如何相互转换
  15. Android网络请求框架Velley的用法与解析
  16. catia 摆正点云的方法_基于CATIA的逆向工程点云定位方法
  17. vue 会议室日历预约组件
  18. 1.19.5.3.时态表、关联一张版本表、关联一张普通表、时态表、声明版本表、声明版本视图、声明普通表、时态表函数等
  19. 用python让excel 飞起来(数据处理与分析操作)
  20. 最优化技术——单纯形法

热门文章

  1. python操作sqlite3----创建表
  2. linux运维工程师培训课程_Linux运维工程师工作内容总结!
  3. 一文带你秒懂 字节序(byte order),比特序(bit order),位域(bit field)
  4. Android Telephony Call分析
  5. 计算机视觉 英文论文,数字图像处理 外文翻译 外文文献 英文文献 数字图像处理方法研究.doc...
  6. 爆笑!出租车司机经典语录
  7. Excel 计算某一列不重复的值的个数公式
  8. verilog学习记(学习设计cpu)
  9. ICLR 2023 | GeneFace:高可泛化高保真度的说话人视频合成
  10. 一波骚操作,用 Python 给照片换颜色