不懂hash的话:https://www.cnblogs.com/ALINGMAOMAO/p/10345850.html

思路:对于一个大矩阵的每一个子矩阵都对应着一个hash值k, 当k出现2次以上时就满足要求

   只是对长度进行二分就可以了。

收获:学会了hash算法

#include<iostream>
#include<map>
using namespace std;
#define ll long long
#define ull unsigned long long
const int maxn = ;
const ull base1 = ;
const ull base2 = ;
int n, m;
char mp[maxn][maxn];
ull has[maxn][maxn];
ull p1[maxn], p2[maxn];
map<ull, int>mmp; void init(){
p1[] = p2[] = ;
for (int i = ; i <= ; ++i){
p1[i] = p1[i - ] * base1;
p2[i] = p2[i - ] * base2;
}
}
void Hash(){
has[][] = ;
has[][] = ;
has[][] = ;
for (int i = ; i <= n;++i)
for (int j = ; j <= m; ++j){
has[i][j] = has[i][j-] * base1 + mp[i][j]-'a';
}
for (int i = ; i <= n;++i)
for (int j = ; j <= m; ++j){
has[i][j] = has[i - ][j] * base2 + has[i][j];
}
} bool check(int x){
mmp.clear();
for (int i = x; i <= n; ++i)
for (int j = x; j <= m; ++j){
ull k = has[i][j] - has[i - x][j] * p2[x] - has[i][j - x] * p1[x] + has[i - x][j-x] * p1[x]*p2[x];
mmp[k]++;
if (mmp[k] >= )return true;
}
return false;
} int main()
{
init();
while (cin >> n >> m){
for (int i = ; i <= n; ++i)
cin >> (mp[i] + );
Hash();
int l = , r = , ans = ;
while (l <= r){
int mid = (l + r) / ;
if (check(mid)){
l = mid + ;
ans = mid;
}
else{
r = mid - ;
}
}
cout << ans << endl;
}
}

最新文章

  1. ASP.NET安全
  2. lodop打印控件
  3. [UML]UML系列——类图class的依赖关系
  4. 【算法和数据结构】_11_小算法_itoa、ftoa及字符串倒置
  5. hessionproxy
  6. 如何用Apache TCPMon来截获SOAP消息
  7. svn中的图标解释
  8. 使用堆栈结构进行字符串表达式(&quot;7*2-5*3-3+6/3&quot;)的计算
  9. 如何在自己的Activity中去控制EditText的焦点
  10. Swift UI学习UITableView and protocol use
  11. disconf使用小结
  12. COMCMS_CORE 起步篇,如何运行和部署
  13. 【转】判断处理器是Big_endian的还是Little_endian的
  14. C# IIS 服务器上传图片500解决办法
  15. idea 自动导入包和自动将没用的包去除
  16. hbase源码系列(五)Trie单词查找树
  17. Android XML数据解析
  18. sql函数应用例子
  19. ecmall2.3.0 前后台样式等无效,导致前台页面显示不正常问题解决
  20. leetcode278

热门文章

  1. C#如何通过属性名称反射出属性本身
  2. Andorid 刷新样式一
  3. jQuery中页面返回顶部的方法总结
  4. JavaScript for/in 语句 遍历数组内容
  5. python语言学习---3
  6. weui textarea超出字符被截断
  7. Hibernate:查询
  8. Linux中DNS的设置
  9. mssql sqlserver 使用脚本输出excel文件的方法分享
  10. Elasticsearch-精确查找