随笔分类 -  AC自动机

摘要:GRE Words Revenge 题意和思路都和上一篇差不多。 有一个区别就是需要移动字符串。关于这个字符串,可以用3次reverse来转换, 前面部分翻转一下, 后面部分翻转一下, 最后整个串翻转一下就好了。 注意就是多组测试,需要初始化。 1 #include<bits/stdc++.h> 2 阅读全文
posted @ 2018-05-20 21:07 Schenker 阅读(204) 评论(0) 推荐(0) 编辑
摘要:String Set Queries 题意:给你3种操作,1、加入一个串到集合中。 2、删除集合中的某一个串 3、查询集合中的字符串在给定的字符串种出现几次。(同一个串可重复) 解法:建立多个AC自动机,用二进制分组来处理。 加入给你21个串: 分为 16+4+1,再添加一个串的时候,即21+1, 阅读全文
posted @ 2018-05-20 16:17 Schenker 阅读(217) 评论(0) 推荐(0) 编辑
摘要:HDU-3695 Computer Virus on Planet Pandora 题意:电脑中病毒了, 现在n钟病毒指令, 然后有一个电脑指令, 看一下这个电脑指令中了几个病毒, 如果电脑种了某一个病毒, 那么就有子串是病毒指令, 或者 子串的反串是病毒指令, 现在问电脑指令一共感染了多少病毒。 阅读全文
posted @ 2018-04-07 20:53 Schenker 阅读(401) 评论(0) 推荐(0) 编辑
摘要:AC自动机的实现原理是KMP + 字典树。 学AC自动机之前要先去学KMP 和 字典树。 第一步先构建一个字典树。 1 void Insert(){ 2 int rt = 1, len = strlen(str); 3 for(int i = 0; i < len; i++){ 4 int id = 阅读全文
posted @ 2018-04-07 16:48 Schenker 阅读(229) 评论(0) 推荐(0) 编辑