[JSOI2008] [BZOJ1567] Blue Mary的战役地图 解题报告 (hash)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1567
Description
Input
Output
Sample Input
1 2 3
4 5 6
7 8 9
5 6 7
8 9 1
2 3 4
Sample Output
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std; const int mo=;
const int N=;
ll n;
ll a[N][N],b[N][N];
unsigned int a1[N][N],b1[N][N],a2[N][N],b2[N][N],A[N*N],B[N*N];
bool check(ll v)
{
ll p=,pm=;
for (int i=;i<=N;i++)
pm=pm*p%mo;
memset(a1,,sizeof(a1));
memset(b1,,sizeof(b1));
memset(a2,,sizeof(a2));
memset(b2,,sizeof(b2));
memset(A,,sizeof(A));
memset(B,,sizeof(B));
for (int i=;i<=n;i++)
for (int j=;j+v-<=n;j++)
for (int k=;k<=v;k++)
a1[i][j]=(a1[i][j]*p+a[i][j+k-])%mo;
for (int i=;i+v-<=n;i++)
for (int j=;j+v-<=n;j++)
for (int k=;k<=v;k++)
a2[i][j]=(a2[i][j]*pm+a1[i+k-][j])%mo;
for (int i=;i<=n;i++)
for (int j=;j+v-<=n;j++)
for (int k=;k<=v;k++)
b1[i][j]=(b1[i][j]*p+b[i][j+k-])%mo;
for (int i=;i+v-<=n;i++)
for (int j=;j+v-<=n;j++)
for (int k=;k<=v;k++)
b2[i][j]=(b2[i][j]*pm+b1[i+k-][j])%mo;
int tot=;
for (int i=;i+v-<=n;i++)
for (int j=;j+v-<=n;j++)
A[++tot]=a2[i][j],B[tot]=b2[i][j];
sort(A+,A++tot);
sort(B+,B++tot);
for (int i=;i<=tot;i++)
if (A[lower_bound(A+,A++tot,B[i])-A]==B[i])
return true;
return false;
}
int main()
{
scanf("%lld",&n);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
scanf("%lld",&a[i][j]);
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
scanf("%lld",&b[i][j]);
ll l=,r=N,ans=,mid;
while (l<=r)
{
mid=l+r>>;
if (check(mid)) l=mid+,ans=mid;
else r=mid-;
}
printf("%lld\n",ans);
return ;
}
[JSOI2008] [BZOJ1567] Blue Mary的战役地图 解题报告 (hash)的更多相关文章
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图( 二分答案 + hash )
二分答案, 然后用哈希去判断... ------------------------------------------------------------------------- #include ...
- B1567 [JSOI2008]Blue Mary的战役地图 二分答案+hash
一开始以为是dp,后来看了一下标签...二分答案?之前也想过,但是没往下想,然后之后的算法就顺理成章,先求出第一个地图的所有子矩阵的hash值,然后求第二个,在上一个地图例二分查找,然后就没了. 算法 ...
- bzoj 1567: [JSOI2008]Blue Mary的战役地图【二分+hash】
二维哈希+二分 说是二维,其实就是先把列hash了,然后再用列的hash值hash行,这样可以O(n)的计算一个正方形的hash值,然后二分边长,枚举左上角点的坐标然后hash判断即可 只要base选 ...
- BZOJ 1567 Blue Mary的战役地图(二维hash+二分)
题意: 求两个矩形最大公共子正方形.(n<=50) 范围这么小可以枚举子正方形的边长.那么可以对这个矩形进行二维hash,就可以在O(1)的时候求出任意子矩形的hash值.然后判断这些正方形的h ...
- bzoj1567: [JSOI2008]Blue Mary的战役地图
将矩阵hash.s[0]忘了弄成0,输出中间过程发现了. hash.sort.判重.大概这样子的步骤吧. #include<cstdio> #include<cstring> ...
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图
1567: [JSOI2008]Blue Mary的战役地图 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1011 Solved: 578[Sub ...
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图 矩阵二维hash
1567: [JSOI2008]Blue Mary的战役地图 Description Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏.她正在设法寻找更多的战役地图以进一步提 ...
- [JSOI2008]Blue Mary的战役地图(二分+哈希)
Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏.她正在设法寻找更多的战役地图以进一步提高自己的水平. 由于Blue Mary的技术已经达到了一定的高度,因此,对于用同一种打 ...
- BZOJ1567 [JSOI2008]Blue Mary的战役地图 二分答案 哈希
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1567 题意概括 给出两个n*n的数字矩阵,问最大公共正方形边长. 题解 先二分答案一个m,对于每一 ...
随机推荐
- 在Html5中与服务器交互
转自原文 在Html5中与服务器交互 刚刚涉足职场,上头就要我研究HTML5,内嵌到手机上,这对我来说完全是一个陌生的领域,不过也正好给自己一个机会来学习,最近做到要跟服务器交互这部分,这部分可是卡了 ...
- Android-HttpURLConnection自己主动管理cookie
Volley那么好用的框架居然没有内置对cookie的处理,自己搞一个! public class MobCookieManager {//转载请标明出处:http://blog.csdn.net/g ...
- C#调用webservice(二)
第二篇调用webservice,web服务是http://webservice.webxml.com.cn/webservices/DomesticAirline.asmx,航班查询服务 添加web服 ...
- JQuery实现的弹窗效果
这是笔者实际项目中的一个需求,我们先来看看特效. 页面加载时弹出窗口,点击关闭按钮,窗口消失并呈现动画效果. 实现代码如下: <!DOCTYPE HTML PUBLIC "-//W3C ...
- HTML&CSS——网站注册页面
1.表单标签 所有需要提交到服务器端的表单项必须使用<form></form>括起来! form 标签属性: action,整个表单提交的位置(可以是一个页面,也可以是一个后 ...
- 【原创】TimeSten安装与配置
1.安装TimeSten 2.安装时要指定TNS_ADMIN_LOCATION,即tnsnames.ora的路径,因为tt会根据这个连接Oracle.C:\TimesTen\tt1122_32\net ...
- STM8S103之串口
1.串口发送中断标志的清除,只能靠往UART_DR中写数据,这个的本质含义是,发送中断是指发送完成中断,所以往UART_DR中写数据可以清除发送中断标志.但是这样又会导致新写的数据完成后又会产生中断, ...
- HDU 5234 Happy birthday【DP】
题意:给出n*m的格子,每个格子的值为w[i][j],在值不超过k的时候,可以往右或者往下走,问从(1,1)走到(n,m)能够得到的最大的值 类似于背包 d[i][j][k]=maxx(d[i-1][ ...
- JDOJ 2785: 商之和 数论分块
Code: #include <iostream> #include <cstdio> #define setIO(s) freopen(s".in",&q ...
- js常见语法错误
“Missing semicolon.” : “缺少分号.”, “Use the function form of \”use strict\”.” : “使用标准化定义function.”, “Un ...