UVA 11019 Matrix Matcher

来源:互联网 发布:网络信息安全校园招聘 编辑:程序博客网 时间:2024/06/11 20:20

hash大法好,hash出奇迹。

厉害学弟写厉害的AC自动机,不会,只能拼RP写HASH

。。。

#include<stdio.h>#include<string.h>#include<set>#include<map>#include<algorithm>using namespace std;#define rep(i,s,t) for(int i=s;i<t;i++)typedef unsigned long long ull;const ull B1=10000007;const ull B2=100000007;int t,n,m,x,y,ans;char s[1001][1001],a[101][101];ull p;ull tmp[1001][1001],ttmp[1001][1001];inline ull Hash(){ull c,d=0;rep(i,0,x){c=0;rep(j,0,y){c=c*B1+a[i][j];}d=d*B2+c;}return d;}inline void getAns(){ull t,a;t=1;rep(i,0,y) t*=B1; rep(i,0,n){a=0;rep(j,0,y) a=a*B1+s[i][j];tmp[i][y-1]=a;rep(j,y,m){tmp[i][j]=tmp[i][j-1]*B1-s[i][j-y]*t+s[i][j];}}t=1;rep(i,0,x) t*=B2;rep(i,y-1,m){a=0;rep(j,0,x) a=a*B2+tmp[j][i];ttmp[x-1][i]=a;if(a==p) ans++;rep(j,x,n){ttmp[j][i]=ttmp[j-1][i]*B2-tmp[j-x][i]*t+tmp[j][i];if(ttmp[j][i]==p) ans++;}}}int main(){scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);rep(i,0,n) scanf("%s",s[i]);scanf("%d%d",&x,&y);rep(i,0,x) scanf("%s",a[i]);p=Hash();ans=0;getAns();printf("%d\n",ans);}return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 老人退伍证丢了怎么办 狗狗又拉又吐怎么办 孕妇吃了马兰头怎么办 怀孕吃了马兰头怎么办 吃了茭白和豆腐怎么办 电气焊加工怎么办环评 手上皮肤干燥起皮怎么办 脸上起皮怎么办还痒痒 店铺4周被释放了怎么办 炫舞账号忘了怎么办 椎基底供血不足怎么办? 脑动脉供血不足怎么办 颈椎引起的脑供血不足怎么办 军人保障卡怎么办假的 正常形态精子率低怎么办 前向运动精子21怎么办 前向运动精子22%怎么办 前向运动精子19%怎么办 前向运动精子为0怎么办 被蝎子草扎了怎么办 二年级孩子成绩差怎么办 长治医保卡丢了怎么办 农商银行倒闭钱怎么办 2相电变3相电怎么办 电机六根线乱了怎么办 三相电零线带电怎么办 孕30周胎盘偏厚怎么办 偏侧咀嚼大小脸怎么办 咀嚼导致的脸歪怎么办 30岁了不想长大怎么办 4岁宝宝沉迷手机怎么办 我沉迷于了游戏怎么办 学生小红本丢了怎么办 小学玩6年初中怎么办 鼻炎喘不过来气怎么办 面对素质低的人怎么办 对没素质的人怎么办 爸妈吵架要离婚怎么办 爸妈为钱吵架怎么办 50岁父母闹离婚怎么办 父母吵架要离婚我该怎么办