二分答案mid,然后检验是否存在两个相同的mid*mid的正方形

检验方法:

首先对于每个位置,求出它开始长度为mid的横行的hash值

然后对于hash值再求一次竖列的hash值

将第二次求出的hash值排序,如果存在两个相同的hash值则可行

#include<cstdio>
#include<algorithm>
#define N 510
typedef unsigned long long ll;
const ll D1=97,D2=131;
int n,m,i,j,l,r,mid,ans,t;char a[N][N];ll pow1[N],pow2[N],h[N][N],tmp,tmp2,hash[N*N];
bool check(int x){for(i=1;i<=n;i++){for(tmp=0,j=1;j<x;j++)tmp=tmp*D1+a[i][j],h[i][j]=0;for(j=x;j<=m;j++)h[i][j]=tmp=tmp*D1-pow1[x]*a[i][j-x]+a[i][j];}for(t=0,i=x;i<=m;i++){for(tmp=0,j=1;j<x;j++)tmp=tmp*D2+h[j][i];for(j=x;j<=n;j++)hash[t++]=tmp=tmp*D2-pow2[x]*h[j-x][i]+h[j][i];}for(std::sort(hash,hash+t),i=1;i<t;i++)if(hash[i-1]==hash[i])return 1;return 0;
}
int main(){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)for(scanf("%s",a[i]+1),j=1;j<=m;j++)a[i][j]-='a'-1;l=1,r=n<m?n:m;for(pow1[0]=pow2[0]=i=1;i<=r;i++)pow1[i]=pow1[i-1]*D1,pow2[i]=pow2[i-1]*D2;while(l<=r)if(check(mid=(l+r)>>1))l=(ans=mid)+1;else r=mid-1;return printf("%d",ans),0;
}

  

BZOJ1397 : Ural 1486 Equal squares相关推荐

  1. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  2. Codeforces Round #343 (Div. 2) A. Far Relative’s Birthday Cake 水题

    A. Far Relative's Birthday Cake 题目连接: http://www.codeforces.com/contest/629/problem/A Description Do ...

  3. V-rep学习笔记:机器人逆运动学数值解法(Damped Least Squares / Levenberg-Marquardt Method)...

    The damped least squares method is also called the Levenberg-Marquardt method. Levenberg-Marquardt算法 ...

  4. (哈希)Squares (p2002)

    这个要注重二分的查找,,.先是二分查找的方法, #include<iostream> #include<cstdio> #include<algorithm> #i ...

  5. URAL 1028 数星星 题解

    URAL 1028 数星星 题解 URAL 1028 题目 Astronomers often examine star maps where stars are represented by poi ...

  6. Ceres Solver 官方教程学习笔记(十二)——非线性最小二乘法建模Modeling Non-linear Least Squares (下)

    这一部分主要是最后的Problem比较重要. 带条件的代价函数ConditionedCostFunction 这个类使用户可以在使用封装好的代价函数的同时,对残差值加入一定的条件限制.举个例子,现在已 ...

  7. java equal hashcode_Java(二)equal 和 hashcode使用

    一.hashCode()和equals()是什么? hashCode()方法和equals()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致. Equal 没有重写的equal 使用 ...

  8. 讨论JDK的File.equal()

    我们一般比较两个文件中的对象是相同的文件,通常使用java.io.File.equal().这里,equal()是不是文件内容的比较结果为.象是否指向同一个文件. File的equal()方法.实际上 ...

  9. RuntimeError: each element in list of batch should be of equal size

    RuntimeError: each element in list of batch should be of equal size 示例代码: import os import re from t ...

  10. R语言层次聚类:通过内平方和(Within Sum of Squares, WSS)选择最优的聚类K值、以内平方和(WSS)和K的关系并通过弯头法(elbow method)获得最优的聚类个数

    通过内平方和(Within Sum of Squares, WSS)选择最佳的聚类K值.以内平方和(WSS)和K的关系并通过弯头法(elbow method)获得最佳的聚类个数 目录

最新文章

  1. 建立UDP到虚拟串口的映射软件 : USR-VCOM,并应用到WiFi调试ESP32
  2. mysql根据id删除数据sql语句_sql delete根据id删除数据库
  3. unknow ’query_cache_size’报错的解决方法吗
  4. 高斯拉普拉斯算子(Laplace of Gaussian)
  5. 社交之后又是资讯,支付宝要用内容吸引流量
  6. Win-MASM64汇编语言-LOOP指令
  7. PCB贴片元器件手工焊接技巧及要点
  8. 去掉桌面图标蓝底的方法
  9. autoCAD2010裁剪工具使用
  10. 遥感数据网站整理中......
  11. 约翰 霍普克罗夫特计算机科学中心,北京大学
  12. PS精修电影胶片调色特效[附素材及方法]
  13. learn language Part-One
  14. 浅谈统计检验效能和FDR
  15. 语言模型训练工具SRILM详解
  16. 【Unity】环境光探究,在shader中如何计算 : Ambient Color, Sky Color, Equator Color, Ground Color
  17. RT-Thread嵌入式人工智能教学研讨会圆满成功
  18. 最火的Android开源项目整理
  19. 中学学校计算机教室平面布置图,学校布局平面图.doc
  20. MySql——忘记密码怎么办

热门文章

  1. java web实训项目_通知 | Java、web大前端将在南京开课啦!
  2. bcoma 应用程序发生错误_Golang 错误和异常处理(含生产环境下的解决方案)
  3. docker host模式拿到nginx远程ip端口_docker网络模式实战
  4. typecho图标_使你的Typecho支持Emoji表情
  5. 开源一套基于 React Naitve 的业务驱动型 UI 组件库:react-native-atlas
  6. 专访普渡科技:深耕餐饮业务,充分发掘送餐机器人的商业价值
  7. 通过sudo提权方式控制公司人员权限
  8. Peasy.NET学习之并发问题处理
  9. 取代SharedPreferences的多进程解决方案
  10. avalon2学习教程14动画使用