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 ...
随机推荐
- bzoj3040
题解: 模板题,地界特斯拉+堆优化 注意第一种建边 代码: #include<bits/stdc++.h> using namespace std; typedef long long l ...
- WordCount:C语言实现
项目地址:https://github.com/m8705/WordCount 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数. 这个项目要求写一个命令行程序,模仿已 ...
- java发生邮件(转)
参考链接:http://www.runoob.com/java/java-sending-email.html package test.mail; import com.sun.mail.util. ...
- JQuery, Silverlight 公用WCF
WCF web.config配置: <?xml version="1.0"?> <configuration> <system.web> < ...
- union-find算法
1.背景 <算法>一书中提到了关于算法的一些基本思想 优秀的算法因为能够解决实际的问题而变得更为重要: 高效算法的代码可以很简单: 理解某个实现的性能特点是一项有趣而令人满足的挑战: 在 ...
- HDU 4585
http://acm.hdu.edu.cn/showproblem.php?pid=4585 从原来的人中找出战斗数值最接近的,输出他们两人的序号 要在logn的复杂度完成查找,我用的是set,当然用 ...
- 【机器学习算法】AdaBoost自适应提升算法
前言 AdaBoost的算法步骤比较容易理解,可以参考李航老师的<统计学习方法>和July的blog. 对博主而言,最主要的是迭代部分的第二步骤是如何如何确定阈值呢,也就是说有一个特征就有 ...
- stm32 内部温度传感器的配置
STM32的内部温度传感器和ADCx—IN16输入通道相连接.且温度传感器推荐采样时间为17.1us,支持的温度范围为:-40~125度,精度比较差,± 5℃左右. 计算温度值:T(℃) ={(V25 ...
- HDU - 2475:Box(splay维护森林)
There are N boxes on the ground, which are labeled by numbers from 1 to N. The boxes are magical, th ...
- Ubuntu终端及VI 快捷键
Ubuntu终端 快捷键 功能 Tab 自动补全 Ctrl+a 光标移动到开始位置 Ctrl+e 光标移动到最末尾 Ctrl+k 删除此处至末尾的所有内容 Ctrl+u 删除此处至开始的所有内容 Ct ...