Code:

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std;
const int maxn=103;
const int maxd=1005;
const int maxc=maxd*10;
const int sigma=28;
char A[maxd][maxd],B[maxn];
int ans[maxd][maxd];
int N,M,X,Y;
# define pb push_back
struct AC{
int ch[maxc][50],f[maxc];
vector<int>G[maxc];
queue<int>Q;
int cnt=0;
int idx(char t){return t-'a';}
void init(){
memset(ch,0,sizeof(ch));
memset(f,0,sizeof(f));
memset(ans,0,sizeof(ans));
for(int i=0;i<maxc;++i)G[i].clear();
cnt=0;
}
void insert(char T[],int u){
int n=strlen(T);
int j=0;
for(int i=0;i<n;++i){
int a=idx(T[i]);
if(!ch[j][a])ch[j][a]=++cnt;
j=ch[j][a];
}
G[j].pb(u);
}
void getfail(){
for(int i=0;i<=sigma;++i)if(ch[0][i]){Q.push(ch[0][i]);}
while(!Q.empty()){
int r=Q.front();Q.pop();
for(int i=0;i<=sigma;++i){
int u=ch[r][i];
if(!u){ch[r][i]=ch[f[r]][i];continue;}
Q.push(u);
int v=f[r];
f[u]=ch[v][i];
}
}
}
void operate()
{
for(int i=0;i<N;++i)
{
int p=0;
for(int j=0;j<M;++j){
int c=idx(A[i][j]);
p=ch[p][c];
int sz=G[p].size();
if(sz>0)
{
for(int g=0;g<sz;++g)
{
int h=G[p][g];
if(h<=i)ans[i-h][j-Y+1]+=1;
}
}
}
}
}
}op;
int main(){
int T;scanf("%d",&T);
while(T--){
op.init();
scanf("%d%d",&N,&M);
for(int i=0;i<N;++i)scanf("%s",A[i]);
scanf("%d%d",&X,&Y);
for(int i=0;i<X;++i){scanf("%s",B);op.insert(B,i);}
op.getfail();
op.operate();
int fin=0;
for(int i=0;i<N;++i)
for(int j=0;j<M;++j)
if(ans[i][j]==X)++fin;
printf("%d\n",fin);
}
return 0;
}

  

Matrix Matcher UVA - 11019AC_自动机 + 代价提前计算的更多相关文章

  1. [bzoj2726][SDOI2012]任务安排 ——斜率优化,动态规划,二分,代价提前计算

    题解 本题的状态很容易设计: f[i] 为到第i个物件的最小代价. 但是方程不容易设计,因为有"后效性" 有两种方法解决: 1)倒过来设计动态规划,典型的,可以设计这样的方程: d ...

  2. UVA 11019 Matrix Matcher(ac自动机)

    题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. UVA11019 Matrix Matcher (AC自动机)

    二维的矩阵匹配,把模式矩阵按列拆开构造AC自动机,记录行号(为了缩点判断). 把T矩阵按行匹配,一旦匹配成功,在假想的子矩阵左上角位置加一.最后统计总数. 因为所有模式串长度一样,不用维护last数组 ...

  4. 洛谷 P2365 任务安排_代价提前计算 + 好题

    最开始,笔者将状态 fif_{i}fi​ 定义为1到i的最小花费 ,我们不难得到这样的一个状态转移方程,即 fi=(sumti−sumtj+S+Costj)∗(sumfi−sumfj)f_{i}=(s ...

  5. UVA - 1625 Color Length[序列DP 提前计算代价]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

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

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

  7. BZOJ 2726: [SDOI2012]任务安排 [斜率优化DP 二分 提前计算代价]

    2726: [SDOI2012]任务安排 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 868  Solved: 236[Submit][Status ...

  8. 费用提前计算相关的DP(BZOJ2037,POJ3042,ZOJ3469)

    在刷ZeroClock大神的区间DP专辑,遇见了ZOJ3469,完全不无从下手,然后有人说是论问题,推荐看徐源盛<对一类动态规划问题的研究>这篇论文,果断得膜拜了下,感觉好神奇,可以把未来 ...

  9. UVa 11019 (AC自动机 二维模式串匹配) Matrix Matcher

    就向书上说得那样,如果模式串P的第i行出现在文本串T的第r行第c列,则cnt[r-i][c]++; 还有个很棘手的问题就是模式串中可能会有相同的串,所以用repr[i]来记录第i个模式串P[i]第一次 ...

随机推荐

  1. 嵌入式linux实现NAT端口映射

    场景: 1.嵌入式linux系统内已经在2个网卡,分别为eth0(内网物理网卡,ip地址:192.168.1.4)以及ppp1(VPN客户端通过PPTP协议拨号生成的虚拟网卡,ip地址:192.168 ...

  2. EXPLAIN sql优化方法(1) 添加索引

    添加索引优化器更高效率地执行语句 假设我们有两个数据表t1和t2,每个有1000行,包含的值从1到1000.下面的查询查找出两个表中值相同的数据行: mysql> SELECT t1.i1, t ...

  3. Leading and Trailing

    You are given two integers: n and k, your task is to find the most significant three digits, and lea ...

  4. 洛谷——P1910 L国的战斗之间谍

    https://www.luogu.org/problem/show?pid=1910#sub 题目背景 L国即将与I国发动战争!! 题目描述 俗话说的好:“知己知彼,百战不殆”.L国的指挥官想派出间 ...

  5. tomcat日志采集

    1. 采集tomcat确实比之前的需求复杂很多,我在搭建了一个tomcat的环境,然后产生如下报错先贴出来: Jan 05, 2017 10:53:35 AM org.apache.catalina. ...

  6. iOS 8 UI布局 AutoLayout及SizeClass(二)

    一.新特性Size Class介绍 随着iOS8系统的公布,一个全新的页面UI布局概念出现,这个新特性将颠覆包含iOS7及之前版本号的UI布局方式,这个新特性就是Size Class. Size Cl ...

  7. Activiti的简单入门样例(经典的请假样例)

    经典的请假样例: 流程例如以下,首先须要部门经理审批.假设请假天数大于2天,则须要总经理审批,否则HR审批就可以 一:创建maven项目,项目结构例如以下: watermark/2/text/aHR0 ...

  8. luogu1896 [SCOI2005]互不侵犯 状压DP

    题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子.( 1 <=N <=9, 0 ...

  9. modelstate.isvalid false

    http://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why 第一个 About "can it be th ...

  10. SQL Server 2005外围应用配置器

     在SQL Server Configuration Manager中,重启“SQL Server(SQL2005)”服务.