bzoj1567: [JSOI2008]Blue Mary的战役地图
将矩阵hash。s[0]忘了弄成0,输出中间过程发现了。
hash。sort。判重。大概这样子的步骤吧。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
#define ll unsigned long long
#define rep(i,n) for(int i=1;i<=n;i++)
#define clr(x,c) memset(x,c,sizeof(x))
#define REP(i,s,t) for(int i=s;i<=t;i++)
int read(){
int x=0;char c=getchar();bool f=true;
while(!isdigit(c)) {
if(c=='-') f=false;c=getchar();
}
while(isdigit(c)) x=x*10+c-'0',c=getchar();
return f?x:-x;
}
ll n,f[2][55][55],mm[55],s[3000];
void init(){
n=read();
clr(f,0);clr(s,0);
rep(i,n) rep(j,n) f[0][i][j]=f[0][i][j-1]*103+read();
rep(i,n) rep(j,n) f[1][i][j]=f[1][i][j-1]*103+read();
mm[1]=1;REP(i,2,54) mm[i]=mm[i-1]*103;
}
ll get(int x,int y,int t,int op){
ll ans=1;
REP(i,x,x+t-1) ans=(ans*127+f[op][i][y+t-1]-f[op][i][y-1]*mm[t+1]);
return ans;
}
bool check(int x){
s[0]=0;
rep(i,n-x+1) rep(j,n-x+1) s[++s[0]]=get(i,j,x,0);
sort(s+1,s+s[0]+1);
//rep(i,s[0]) printf("%d ",s[i]);printf("\n");
rep(i,n-x+1) rep(j,n-x+1) {
ll tmp=get(i,j,x,1);
//printf("=>%d\n",tmp);
if(*lower_bound(s+1,s+s[0]+1,tmp)==tmp) return true;
}
return false;
}
void work(){
int l=1,r=n,ans=0,mid;
while(l<=r){
mid=(l+r)>>1;
if(check(mid)) ans=mid,l=mid+1;
else r=mid-1;
}
printf("%d\n",ans);
}
int main(){
init();work();return 0;
}
1567: [JSOI2008]Blue Mary的战役地图
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 800 Solved: 462
[Submit][Status][Discuss]
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
HINT
样例解释:
子矩阵:
5 6
8 9
为两个地图的最大公共矩阵
约定:
n<=50
Source
bzoj1567: [JSOI2008]Blue Mary的战役地图的更多相关文章
- BZOJ1567 [JSOI2008]Blue Mary的战役地图 二分答案 哈希
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1567 题意概括 给出两个n*n的数字矩阵,问最大公共正方形边长. 题解 先二分答案一个m,对于每一 ...
- 【矩阵哈希】【二分答案】【哈希表】bzoj1567 [JSOI2008]Blue Mary的战役地图
引用题解:http://hzwer.com/5153.html 当然,二分可以换成哈希表. #include<cstdio> #include<iostream> #inclu ...
- BZOJ1567 [JSOI2008]Blue Mary的战役地图(二分+二维hash)
题意 问边长为n的两个正方形中最大的相等子正方形.(n<=50) 题解 用到了二维hash,感觉和一维的不太一样. 对于列行有两个不同的进制数然后也是通过类似前缀和的方法差分出一个矩形的hash ...
- BZOJ 1567: [JSOI2008]Blue Mary的战役地图( 二分答案 + hash )
二分答案, 然后用哈希去判断... ------------------------------------------------------------------------- #include ...
- 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的技术已经达到了一定的高度,因此,对于用同一种打 ...
- B1567 [JSOI2008]Blue Mary的战役地图 二分答案+hash
一开始以为是dp,后来看了一下标签...二分答案?之前也想过,但是没往下想,然后之后的算法就顺理成章,先求出第一个地图的所有子矩阵的hash值,然后求第二个,在上一个地图例二分查找,然后就没了. 算法 ...
- [JSOI2008]Blue Mary的战役地图
嘟嘟嘟 当看到n <= 50 的时候就乐呵了,暴力就行了,不过最暴力的方法是O(n7)……然后加一个二分边长达到O(n6logn),然后我们接着优化,把暴力比对改成O(1)的比对hash值,能达 ...
随机推荐
- C#中Linq查询基本操作
摘要:本文介绍Linq查询基本操作(查询关键字) - from 子句 - where 子句 - select子句 - group 子句 - into 子句 - orderby 子句 - join 子句 ...
- MapInfo格式转arggis格式
1. 下载MapInfo 11.0 2. 打开工具里的转换工具 3. 选择数据源和结果文件夹(目录中不能包含中文) 4. 转换成功.
- JSON-JObject
http://james.newtonking.com/json/help/index.html http://www.cnblogs.com/usharei/archive/2012/04/24/2 ...
- SQL语言笔记
字符串用单引号',判断用单等号=,两个单引号''转义为一个单引号' 不等号是<> 不区分大小写 []括起来的要不是关键字,要不是非法变量,比如空格隔起来的变量 创建与删除数据库 - ...
- javascript小实例,PC网页里的拖拽(转)
这是现在的效果,可能改了一些,原来的效果是,里面的这张图是可以上下左右拖动的,然后房子上面的显示的楼栋号,也跟着图片一起移动,当时js能力还不行,未能实现项目经理的要求,不过后来项目经理又把这个效果推 ...
- 剑指offer--面试题13
题目:以O(1)的时间复杂度删除单链表中的某个节点 自己所写代码如下: //以O(1)时间删除链表节点 //要求:单向链表,头指针,待删节点指针 //链表节点 struct ListNode { in ...
- SQL语句备忘
SELECT beatid,COUNT(d.id) dongnicount FROM `bed_beat_dongni` d INNER JOIN bed_beat b on b.id = d.bea ...
- 微信变声器(WeChat Voice)会是营销新利器吗
微信变声器(WeChat Voice)2.0 Android版开始内测了,时间从2015年5月20日 - 2015年6月20日,使用微信变声器改变你的声音,并分享给好友! 无论你是想装可爱还是恶搞,微 ...
- linux源代码阅读笔记 linux文件系统(三)
当系统申请一个新的inode时.系统并不会对磁盘进行读写.它会在存储在内存的inode表(inode_table)中寻找一个空闲的位置. 如果找到了,直接返回该inode.否则要等待一个空闲的位置. ...
- SPOJ 7259 Light Switching (水题,区间01取反)
#include <iostream> #include <stdio.h> #include <algorithm> #define lson rt<< ...