bzoj 1414: [ZJOI2009]对称的正方形
Description
Input
Output
#include<cstdio>
char buf[],*ptr=buf;
int _(){
int x=;
while(*ptr<)++ptr;
while(*ptr>)x=x*+*ptr++-;
return x;
}
typedef unsigned int u32;
int n,m;
int a[][];
u32 f[][][],pp1[],pp2[];
long long ans=;
const u32 p1=,p2=;
#define F(i,n) for(int i=1;i<=n;++i)
#define Fd(i,n) for(int i=n;i>=1;--i)
int min(int a,int b){return a<b?a:b;}
bool chk(int l1,int r1,int l2,int r2){
u32 v1=pp1[r1-l1+];
u32 v2=pp2[r1-l1+];
u32 h0=f[][r1][r2]-f[][r1][l2-]*v2-(f[][l1-][r2]-f[][l1-][l2-]*v2)*v1;
u32 h1=f[][r1][l2]-f[][r1][r2+]*v2-(f[][l1-][l2]-f[][l1-][r2+]*v2)*v1;
if(h0!=h1)return ;
u32 h2=f[][l1][r2]-f[][l1][l2-]*v2-(f[][r1+][r2]-f[][r1+][l2-]*v2)*v1;
return h0==h2;
}
int main(){
fread(buf,,sizeof(buf),stdin);
n=_(),m=_();
F(i,n)F(j,m)f[][i][j]=f[][i][j]=f[][i][j]=a[i][j]=_();
F(i,n){
F(j,m)f[][i][j]+=f[][i][j-]*p2;
F(j,m)f[][i][j]+=f[][i-][j]*p1;
}
F(i,n){
Fd(j,m)f[][i][j]+=f[][i][j+]*p2;
Fd(j,m)f[][i][j]+=f[][i-][j]*p1;
}
Fd(i,n){
F(j,m)f[][i][j]+=f[][i][j-]*p2;
F(j,m)f[][i][j]+=f[][i+][j]*p1;
}
pp1[]=pp2[]=;
F(i,n)pp1[i]=pp1[i-]*p1;
F(i,m)pp2[i]=pp2[i-]*p2; F(i,n)F(j,m){
int L=,R=min(min(i-,n-i),min(j-,m-j)),M=;
while(L<R){
if(chk(i-M,i+M,j-M,j+M))L=M;
else R=M-;
M=L+R+>>;
}
ans+=L+;
}
F(i,n-)F(j,m-)if(a[i][j]==a[i][j+]&&a[i][j]==a[i+][j]&&a[i][j]==a[i+][j+]){
int L=,R=min(min(i-,n--i),min(j-,m--j)),M=;
while(L<R){
if(chk(i-M,i+M+,j-M,j+M+))L=M;
else R=M-;
M=L+R+>>;
}
ans+=L+;
}
printf("%lld\n",ans);
return ;
}
bzoj 1414: [ZJOI2009]对称的正方形的更多相关文章
- bzoj 1414: [ZJOI2009]对称的正方形 manacher算法+單調隊列
1414: [ZJOI2009]对称的正方形 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 331 Solved: 149[Submit][Stat ...
- 【bzoj 1414】对称的正方形 单调队列+manacher
Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究.最近,Orez又得到了一些数据,并已经把它们排成了一个n行m列的矩阵.通过观察,Orez发现这些数据蕴涵了一 ...
- 【BZOJ1414】[ZJOI2009]对称的正方形(哈希)
[BZOJ1414][ZJOI2009]对称的正方形(哈希) 题面 BZOJ 洛谷 题解 深思熟虑一波,发现一个矩阵如果左右对称的话,那么它每行都是一个回文串,同理,如果上下对称的话,那么每列都是一个 ...
- 【BZOJ1414/3705】[ZJOI2009]对称的正方形 二分+hash
[BZOJ1414/3705][ZJOI2009]对称的正方形 Description Orez很喜欢搜集一些神秘的数据,并经常把它们排成一个矩阵进行研究.最近,Orez又得到了一些数据,并已经把它们 ...
- 题解-------[ZJOI2009]对称的正方形
传送门 题目大意 找到所有的上下左右都相同的正方形. 思路:二分+二维Hash 这道题我们首先想到不能暴力判断一个正方形是否合法. 然后我们发现当一个正方形合法时,以这个正方形为中心且比它小的正方形也 ...
- [luoguP2601] [ZJOI2009]对称的正方形(二维Hash + 二分 || Manacher)
传送门 很蒙蔽,不知道怎么搞. 网上看题解有说可以哈希+二分搞,也有的人说用Manacher搞,Manacher是什么鬼?以后再学. 对于这个题,可以从矩阵4个角hash一遍,然后枚举矩阵中的点,再二 ...
- luoguP2601 对称的正方形
题目描述 给出一个数字矩形,求这个矩形中有多少个子正方形满足上下对称.左右对称. 思路 我们可以用3个哈希数组 \(a\ b\ c\) 分别表示矩形从左上往右下看,从左下往右上看,从右上往左下看的样子 ...
- [BZOJ 1047] [HAOI2007] 理想的正方形 【单调队列】
题目链接:BZOJ - 1047 题目分析 使用单调队列在 O(n^2) 的时间内求出每个 n * n 正方形的最大值,最小值.然后就可以直接统计答案了. 横向有 a 个单调队列(代码中是 Q[1] ...
- BZOJ 1432: [ZJOI2009]Function
1432: [ZJOI2009]Function Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1046 Solved: 765[Submit][Sta ...
随机推荐
- Socket缓冲区
1.由于可读状态是在对方写入数据后或socket关闭时才能出现,因此如果客户端和服务端都停留在read时,如果没有任何一方,向对方写入数据,这将会产生一个死锁. 2.此外,在本地接收操作发起之前,很可 ...
- openssl 非对称加密DSA,RSA区别与使用介绍(转)
openssl 非对称加密DSA,RSA区别与使用介绍(转) 博客分类: OS.Linux Security 在日常系统管理工作中,需要作一些加解密的工作,通过openssl工具包就能完成我们很多 ...
- MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(一)
你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] MyEclipse支持Java EE技术(如JAX-WS和EJB 3.0),它们以功能包的 ...
- L219 China's office workers consider further education, training essential
More than 90 percent of China's office workers consider on-the-job training and continuing education ...
- php property_exists
property_exists("Device",$prop))判断Device 类中是否存在 $prop 这个属性该函数用来判断一个类中是否存在某个属性. 这里分析了php面向对 ...
- Redis学习第七课:键值命令和服务器命令
Redis键值相关命令 ...
- SWIFT中数字格式
SWIFT中格式化数字比较常用的应该就是以下几种格式了. var formatter = NSNumberFormatter() //formatter.numberStyle = NSNumberF ...
- SW4STM32 全局宏定义
/************************************************************************************ * SW4STM32 全局宏 ...
- java.lang.IndexOutOfBoundsException: setSpan (35 ... 35) ends beyond length 28
/************************************************************************************* * java.lang.I ...
- OK335xS-Android pack-ubi-256M.sh hacking
#/******************************************************************************* # * OK335xS-Androi ...