原题

在大矩阵里找有几个小矩阵出现过,多组数据


将t个矩阵hash值放入multiset,再把大矩阵中每个hash值从multiset里扔出去,这样最后剩在multiset里的值就是没有找到的小矩阵,答案就是t-size了。

矩阵hash:

a[i][j]为以i,j为右下角的长为p,宽为q的hash值。

先处理横行的hash,然后再把横行的hash值hash,这样就得到了矩阵的hash值。(注意行和列的base要不一样,不然很容易WA)

#include<cstdio>
#include<set>
typedef unsigned long long ll;
#define ba1 1314
#define ba2 100000007
#define T 1010
#define P 55
using namespace std;
ll a[T][T],b[T][T],base1[T],base2[T];
int n,m,t,p,q,cnt;
char ac[T][T],chk[2*P][T][T]; void init()
{
base1[0]=1;
base2[0]=1;
for (int i=1;i<=1000;i++)
{
base1[i]=base1[i-1]*ba1;
base2[i]=base2[i-1]*ba2;
}
} void count(char s[][T],int x,int y)
{
for (int i=1;i<=x;i++)
{
for (int j=1;j<=q;j++)
b[i][j]=(j==1)?s[i][j]:(b[i][j-1]*ba1+s[i][j]);
for (int j=q+1;j<=y;j++)
b[i][j]=b[i][j-1]*ba1+s[i][j]-s[i][j-q]*base1[q];
}
for (int j=q;j<=y;j++)
{
for (int i=1;i<=p;i++)
a[i][j]=(i==1)?b[i][j]:(a[i-1][j]*ba2+b[i][j]);
for (int i=p+1;i<=x;i++)
a[i][j]=a[i-1][j]*ba2+b[i][j]-b[i-p][j]*base2[p];
}
} int solve()
{
multiset<ll> s;
for (int i=1;i<=t;i++)
{
count(chk[i],p,q);
s.insert(a[p][q]);
}
count(ac,n,m);
for (int i=p;i<=n;i++)
for (int j=q;j<=m;j++)
s.erase(a[i][j]);
return t-s.size();
} int main()
{
init();
while (~scanf("%d%d%d%d%d",&n,&m,&t,&p,&q) && n+m+t+p+q)
{
++cnt;
for (int i=1;i<=n;i++) scanf("%s",ac[i]+1);
for (int i=1;i<=t;i++)
for (int j=1;j<=p;j++)
scanf("%s",chk[i][j]+1);
printf("Case %d: %d\n",cnt,solve());
}
return 0;
}

[poj] 3690 Constellations || 矩阵hash的更多相关文章

  1. POJ 3690 Constellations (哈希)

    题意:给定上一n*m的矩阵,然后的t个p*q的小矩阵,问你匹配不上的有多少个. 析:可以直接用哈希,也可以用AC自动机解决. 代码如下: #pragma comment(linker, "/ ...

  2. 矩阵hash + KMP - UVA 12886 The Big Painting

    The Big Painting Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=88791 M ...

  3. LA 6893 The Big Painting(矩阵Hash)

    https://vjudge.net/problem/UVALive-6893 题意: 给出一个小矩阵和大矩阵,在大矩阵中能找到相同的小矩阵. 思路: 矩阵Hash,先对小矩阵计算出它的Hash值,然 ...

  4. POJ 3865 - Database 字符串hash

    [题意] 给一个字符串组成的矩阵,规模为n*m(n<=10000,m<=10),如果某两列中存在两行完全相同,则输出NO和两行行号和两列列号,否则输出YES [题解] 因为m很小,所以对每 ...

  5. POJ 2002 统计正方形 HASH

    题目链接:http://poj.org/problem?id=2002 题意:给定n个点,问有多少种方法可以组成正方形. 思路:我们可以根据两个点求出对应正方形[有2个一个在两点左边,一个在两点右边] ...

  6. POJ 1971 统计平行四边形 HASH

    题目链接:http://poj.org/problem?id=1971 题意:给定n个坐标.问有多少种方法可以组成平行四边形.题目保证不会有4个点共线的情况. 思路:可以发现平行四边形的一个特点,就是 ...

  7. POJ 3320 (尺取法+Hash)

    题目链接: http://poj.org/problem?id=3320 题目大意:一本书有P页,每页有个知识点,知识点可以重复.问至少连续读几页,使得覆盖全部知识点. 解题思路: 知识点是有重复的, ...

  8. poj 1840 Eqs (hash)

    题目:http://poj.org/problem?id=1840 题解:http://blog.csdn.net/lyy289065406/article/details/6647387 小优姐讲的 ...

  9. [POJ 3734] Blocks (矩阵高速幂、组合数学)

    Blocks Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3997   Accepted: 1775 Descriptio ...

随机推荐

  1. gdb几个操作

    如果进程转为守护进程,可设置如下跟进子进程 set follow-fork-mode child 输出变量/函数/返回值有print, call, display,自行选择 对于打印value has ...

  2. 字符串替换For linux C

    1.临时空间给了个1024,不需要可减少长度. 2.结果只用用strcpy了,没校验. bool Replace(char *str,const char *src, const char *des) ...

  3. h5页面苹果端浮动问题

    最近在开发一个h5的app端,前端同事写好页面,我们后端java动态化页面,测试的时候发现安卓端什么浏览器都正常如下图1,可是苹果端无论什么浏览器都出现了底部菜单缺少了两个下图2图一:正常显示 图2, ...

  4. 笔记-twisted

    笔记-twisted 1.      简介 Twisted is an event-driven networking engine written in Python and licensed un ...

  5. Python os.walk() 简介

    Table of Contents 1. os.walk目录遍历 1.1. os.walk 1.2. 例子 1.2.1. 测试topdown 1.2.2. 运行时修改遍历目录 2. 参考资料 os.w ...

  6. CSS3---混合模式

    概念 CSS3混合模式(  CSS Blend Modes  )是CSS3新增的一个魔法特性,可以允许多个背景或多个元素进行混合,类似于Photoshop的图层混合模式 CSS3混合模式属性一览 ba ...

  7. python几个复习例子

    1.实现1-100的所有的和,程序代码如下: sum = 0 for i in xrange(1,101): sum +=i print (sum) 程序运行结果: 2.实现1-500所有奇数的和,程 ...

  8. Installing Nginx With PHP5 (And PHP-FPM) And MySQL Support (LEMP) On Ubuntu 12.04 LTS [repost]

    from : http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-lemp-on-ub ...

  9. 独立开发unity2d游戏的问答群

    129443731 有志独立开发游戏的,只讨论最新的unity2d技术的.群里面主要已问答为主,喜欢聊天的就别加群了,灌水多了会被t.希望能对unity2d比较了解的已及喜欢学习的人加入.

  10. 22、(转载)jQueryMobile 知识点总结

    本文转自:http://www.cnblogs.com/jxyedu HTML5技术生态介绍 H5的现状与未来 HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准 ...