暴力时利用自动机的最小性,可以在暴力dfs时和匹配答案时使用自动机优化,可以使纯暴力更快。

struct baoli

{
    baoli *xia[51];
    baoli()
    {
    memset(xia,NULL,sizeof(xia));  
}

}root;

trie树的结构体,xia【51】代表有51个可能的分支

bool insert(char *str)
{
int shu,i=0;
baoli *now=root;
bool you=0;
while(i<n)
{
shu=str[i];
if(now->xia[shu]==NULL)
 you=1,now->xia[shu]=new baoli();

now=now->xia[shu];
i++;
}
if(you)return 1;
else  return 0;

}

类似trie树的加入,不同的是返回,加入和匹配一体化,用bool判重。

bool pipei(char str*)
{
int shu,i=0;
baoli *now=root;
while(i<n)
{
shu=str[i];

if(now->xia[shu]==NULL) return 0;

now=now->xia[shu];
i++;
}
return 1;

}

< =o(n)的询问(谁还能更快?)

所以程序主要复杂度在dfs,再配合优良的剪枝效率会很高。

自创算法——暴力自动机相关推荐

  1. 算法——暴力之美(volence‘s beautify of algorithm)

    暴力算法(volence's beautify of algorithm) 思想:利用暴力法的思想找到所有的解,然后从中选出符合问题要求的解 算法总结:暴力法的优点是实现简单,容易编程,但是往往会消耗 ...

  2. 字符串算法 | AC自动机算法

    1.简介 一种多模式串匹配算法, 可以快速从主串中同时找出所有包含的所有模式串. 对比KMP是单模式匹配, 虽然可以使用单模式串匹配算法逐个进行查找模式串, 但是实际场景中,若模式串的数量可能很大,并 ...

  3. 一个可以AK IOI的算法——暴力

    暴力 很多问题都可以"暴力求解",不用动太大脑筋,把所有可能性都列举出来,然后一一试验.虽然暴力求解法不用动太大大脑筋,但要注意时间复杂磁.因此,对问题一定的分析往往会让算法更加简 ...

  4. BF算法(暴力算法)--模式匹配算法

    模式匹配算法:是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配.用途:搜索引擎.拼写检查.语言翻译.数据压缩等. BF算法:         ...

  5. 根号算法——暴力美学

    零.前言 • 根号算法是一种很常见的算法 • 常见的根号思想有:双向搜索.根号分类讨论.根号重建.复杂 度平衡,以及一些根号级别的数据结构如分块和莫队 • 这些算法一般是多种暴力算法的结合,一般具有较 ...

  6. 枚举算法(暴力法)板子

    1.枚举算法的定义: 在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么该结论是可靠 的,这种归纳方法叫做枚举法,因其逐个考察的性质又称其为"暴力枚举法" ...

  7. 自创算法实现Reporting Service中多值判定

    前提条件:用Reporting Service做过报表,并碰到想确定多选下拉框选了哪些选项却无法确定的情况.如:根据选项显示相应的值. 功能实现:用算法实现Reporting Service中多值判定 ...

  8. 算法篇 --- BF算法(暴力匹配算法)

    找字符串 abcac,在一个串中找另一个串 上下两个字符串的第一个字符比较,如果上下两个字符串的字符不同,上面的字符串(原字符串)就移动一个位置,下面的字符串(给定字符串)不移动 如果第1个字符相同, ...

  9. bzoj 3620: 似乎在梦中见过的样子 kmp算法+暴力

    题意 "Madoka,不要相信 QB!"伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了 ...

最新文章

  1. 通过修改软链接升高 gcc 版本、降低 gcc 版本
  2. Python的零基础超详细讲解(第一天)-Python简介以及下载
  3. python等间隔取样
  4. 3字节转换为有符号整型C语言,3.C语言整型数据
  5. [恢]hdu 2098
  6. python3 列表的增删改查
  7. Edraw Max——亿图图示设计软件基本使用教程
  8. mysql 可重复读 悲观锁_一文带你理解脏读,幻读,不可重复读与mysql的锁,事务隔离机制...
  9. GPRS模块AT呼叫控制命令
  10. awk按分隔符的不同取出不同的列
  11. Android系统信息获取 之八:WIFI设备和WIFI信号信息获取
  12. python3 matplotlib多个子图分别对应不同colorbar
  13. 2018第九届蓝桥杯省赛真题JAVA语言 C组真题题解答案(全)
  14. python实现车牌识别系统
  15. Skin Pack Auto UXThemePatcher-Win8 UXTheme桌面主题破解补丁
  16. [buuctf.reverse] 131-135
  17. 0.91寸 SSD1306 OLED介绍(四) --- 用上位机验证OLED显示屏
  18. 广义表的表头和表尾是什么?
  19. android 原生请求权限代码
  20. Win7系统中wmiprvse.exe占用CPU高如何解决

热门文章

  1. 红橙Darren视频笔记 Activity启动流程(API28)
  2. CSS选择器与Xpath常用语法及对比
  3. 多维标度法MDS古典解的证明与R语言实现
  4. python安装json模块_python 标准模块之json 模块
  5. 如何快速python入手_初学者怎么才能快速学会Python?
  6. FileZilla软件下载使用简易教程
  7. 小程序坑集【日常总结,持续更新(11.08更新)】
  8. 千兆交换机下面可以接多少层交换机_视频监控系统如何选择网络交换机
  9. Java数组相关知识
  10. 卷积面试题(最重要)