#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<algorithm>
#include<queue>
using namespace std;
int c[][];
int mx,nx,m,n;
struct AC
{
int ch[][];
int cnt;
int value[],fail[],last[],next[];
AC(){memset(next,,sizeof(next));memset(ch,,sizeof(ch));cnt=;memset(value,,sizeof(value));memset(fail,,sizeof(fail));memset(last,,sizeof(last));}
void trie(char *s,int v)
{
int now=,len=strlen(s);
for(int i=;i<len;i++)
{
if(!ch[now][s[i]-'a']) ch[now][s[i]-'a']=++cnt;
now=ch[now][s[i]-'a'];
}
if(value[now])
{
next[v]=value[now];
}
value[now]=v;
}
void getfail()
{
queue<int>q;
for(int i=;i<;i++){if(ch[][i]) q.push(ch[][i]);}
while(!q.empty())
{
int now=q.front();q.pop();
for(int i=;i<;i++)
{
int u=ch[now][i];
if(!u){ch[now][i]=ch[fail[now]][i];continue;}
int t=fail[now];
while(t&&!ch[t][i]) t=fail[t];
fail[u]=ch[t][i];
last[u]=value[fail[u]]?fail[u]:last[fail[u]];
q.push(u);
}
}
}
void add(int now,int h,int i)
{
if(now)
{
if(h-value[now]+>=) c[h-value[now]+][i]++;
int t=value[now];
while(next[t])
{
t=next[t];
if(h-t+>=) c[h-t+][i]++;
}
add(last[now],h,i);
}
}
void find(char *s,int h)
{
int len=strlen(s);
int now=;
for(int i=;i<len;i++)
{
now=ch[now][s[i]-'a'];
if(value[now]) add(now,h,i);
else add(last[now],h,i);
}
}
}ac;
int main()
{
int ans=;
char chh[][];
scanf("%d%d",&mx,&nx);
for(int i=;i<mx;i++)scanf("%s",chh[i]);
scanf("%d%d",&m,&n);
for(int i=;i<=m;i++)
{
char temp[];
scanf("%s",temp);
ac.trie(temp,i);
}
ac.getfail();
for(int i=;i<mx;i++) ac.find(chh[i],i);
for(int i=;i<mx;i++)
for(int j=;j<nx;j++) if(c[i][j]==m) ans++;
cout<<ans;
}
矩阵匹配器D316
难度级别:C; 运行时间限制:1500ms; 运行空间限制:262144KB; 代码长度限制:2000000B
试题描述
给你一个sx*sy的小矩阵和一个mx*my的大矩阵,请你求出小矩阵在大矩阵中出现的次数
输入
第一行两个正整数mx,my
接下来跟一个mx行my列的大矩阵
又接下来两个正整数sx,sy
再接下来跟一个sx行sy列的小矩阵
输出
小矩阵在大矩阵中出现的次数
输入示例
3 3
abc
bca
caa
2 2
bc
ca
输出示例
2
其他说明
数据范围:sx≤mx≤1000,sy≤my≤1000 sx,sy≤100

uva11019矩阵匹配器D316的更多相关文章

  1. UVA 11019 Matrix Matcher 矩阵匹配器 AC自动机 二维文本串查找二维模式串

    链接:https://vjudge.net/problem/UVA-11019lrjP218 matrix matcher #include<bits/stdc++.h> using na ...

  2. [Google Guava]字符串处理:连接器、拆分器、字符匹配器

    一.连接器[Joiner] 二.拆分器[Splitter] 三.字符匹配器[CharMatcher] 四.字符集[Charsets] Charsets:针对所有Java平台都要保证支持的六种字符集提供 ...

  3. Junit 断言 assertThat Hamcrest匹配器

    junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...

  4. EassyMock实践 自定义参数匹配器

    虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了.easymock为此提供了I ...

  5. 前端测试框架Jest系列教程 -- Matchers(匹配器)

    写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...

  6. Flask入门之自定义过滤器(匹配器)

    1.  动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...

  7. 【Jest】笔记二:Matchers匹配器

    一.前言 什么是匹配器? 我们可以把匹配器看成,testng断言,这么理解就可以了 二.常用的匹配器 test('two plus two is four', () => { expect(2 ...

  8. BF匹配器

    对于BF匹配器,首先我们得用cv2.BFMatcher()创建BF匹配器对象.它取两个可选参数,第一个是normType.它指定要使用的距离量度.默认是cv2.NORM_L2.对于SIFT,SURF很 ...

  9. Rspec: everyday-rspec实操。FactoryBot预构件 (rspec-expectations gem 查看匹配器) 1-4章

    总文档连接: RSpec.info/documentation/ 包括core, expectiation,rails , mock, 点击最新版本,然后右上角搜索class, method. 第3章 ...

随机推荐

  1. Javacript实现倒计时

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  2. 使用python 3导入MySQLdb 报No module named 'MySQLdb'异常错误

    MySQLdb只支持Python2.*,还不支持3.* 可以用PyMySQL代替安装PyMySQL后,在使用模块时使用import pymysql as MySQLdb 后续使用方式与MySQLdb  ...

  3. 孤荷凌寒自学python第八天 初识Python的序列之元组

    孤荷凌寒自学python第八天 Python的序列之元组 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) (同步音频笔记:https://www.ximalaya.com/keji/19103 ...

  4. mysql语法结构

    环境:win7 64位.mysql 适合阅读者:对sql基本语法有一定了解 <建表语句>: create table <表名>( <列名> <类型> & ...

  5. NBUT校赛 J Alex’s Foolish Function(分块+延迟标记)

    Problem J: Alex’s Foolish Function Time Limit: 8 Sec  Memory Limit: 128 MB Submit: 18  Solved: 2 Des ...

  6. [bzoj5287] [HNOI2018]毒瘤

    题目描述 从前有一名毒瘤. 毒瘤最近发现了量产毒瘤题的奥秘.考虑如下类型的数据结构题:给出一个数组,要求支持若干种奇奇怪怪的修改操作(比如区间加一个数,或者区间开平方),并支持询问区间和.毒瘤考虑了n ...

  7. 在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN

    Generative Adversarial Network 是深度学习中非常有趣的一种方法.GAN最早源自Ian Goodfellow的这篇论文.LeCun对GAN给出了极高的评价: “There ...

  8. 全网把Map中的hash()分析的最透彻的文章,别无二家。

    你知道HashMap中hash方法的具体实现吗?你知道HashTable.ConcurrentHashMap中hash方法的实现以及原因吗?你知道为什么要这么实现吗?你知道为什么JDK 7和JDK 8 ...

  9. [poj] 1236 networks of schools

    原题 这是一道强连通分量板子题. 显然subtask1 是要输出入度为0的点的个数 而subtask2,我们考虑一下最优一定是把一个出度为零的点连到入度为零的点上,这样我们要输出的就是max(出度为零 ...

  10. 雅礼集训 Day6 T1 Merchant 解题报告

    Merchant 题目描述 有\(n\)个物品,第\(i\)个物品有两个属性\(k_i,b_i\),表示它在时刻\(x\)的价值为\(k_i\times x+b_i\). 当前处于时刻\(0\),你可 ...