其实可以二分矩阵边长但是我太懒了$qwq$。

把每个子矩阵扔到$map$里,然后就没了

#include<cstdio>
#include<map>
#include<iostream>
#define ull unsigned long long
#define R register int
using namespace std;
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
} const int B=,B2=,N=;
map<ull,bool> mp;
int n;
ull p[N],p2[N],a[N][N];
inline ull calc(int x,int y,int l) {return a[x][y]-a[x-l][y]*p2[l]-a[x][y-l]*p[l]+a[x-l][y-l]*p[l]*p2[l];}
signed main() {
n=g(); p[]=p2[]=; for(R i=;i<=n;++i) p[i]=p[i-]*B; for(R i=;i<=n;++i) p2[i]=p2[i-]*B2;
for(R i=;i<=n;++i) for(R j=;j<=n;++j) a[i][j]=g();
for(R i=;i<=n;++i) for(R j=;j<=n;++j) a[i][j]=a[i][j-]*B+a[i][j];
for(R i=;i<=n;++i) for(R j=;j<=n;++j) a[i][j]=a[i-][j]*B2+a[i][j];
for(R l=;l<n;++l) for(R i=l;i<=n;++i) for(R j=l;j<=n;++j) mp[calc(i,j,l)]=true;
for(R i=;i<=n;++i) for(R j=;j<=n;++j) a[i][j]=g();
for(R i=;i<=n;++i) for(R j=;j<=n;++j) a[i][j]=a[i][j-]*B+a[i][j];
for(R i=;i<=n;++i) for(R j=;j<=n;++j) a[i][j]=a[i-][j]*B2+a[i][j];
for(R l=n;l;--l) for(R i=l;i<=n;++i) for(R j=l;j<=n;++j) if(mp.find(calc(i,j,l))!=mp.end()) {printf("%d\n",l); return ;}
}

2019.07.11

Luogu P4398 [JSOI2008]Blue Mary的战役地图 矩阵哈希的更多相关文章

  1. BZOJ 1567: [JSOI2008]Blue Mary的战役地图 矩阵二维hash

    1567: [JSOI2008]Blue Mary的战役地图 Description Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏.她正在设法寻找更多的战役地图以进一步提 ...

  2. bzoj1567: [JSOI2008]Blue Mary的战役地图

    将矩阵hash.s[0]忘了弄成0,输出中间过程发现了. hash.sort.判重.大概这样子的步骤吧. #include<cstdio> #include<cstring> ...

  3. BZOJ 1567: [JSOI2008]Blue Mary的战役地图( 二分答案 + hash )

    二分答案, 然后用哈希去判断... ------------------------------------------------------------------------- #include ...

  4. BZOJ 1567: [JSOI2008]Blue Mary的战役地图

    1567: [JSOI2008]Blue Mary的战役地图 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1011  Solved: 578[Sub ...

  5. [JSOI2008]Blue Mary的战役地图(二分+哈希)

    Blue Mary最近迷上了玩Starcraft(星际争霸) 的RPG游戏.她正在设法寻找更多的战役地图以进一步提高自己的水平. 由于Blue Mary的技术已经达到了一定的高度,因此,对于用同一种打 ...

  6. B1567 [JSOI2008]Blue Mary的战役地图 二分答案+hash

    一开始以为是dp,后来看了一下标签...二分答案?之前也想过,但是没往下想,然后之后的算法就顺理成章,先求出第一个地图的所有子矩阵的hash值,然后求第二个,在上一个地图例二分查找,然后就没了. 算法 ...

  7. BZOJ1567 [JSOI2008]Blue Mary的战役地图 二分答案 哈希

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1567 题意概括 给出两个n*n的数字矩阵,问最大公共正方形边长. 题解 先二分答案一个m,对于每一 ...

  8. [JSOI2008]Blue Mary的战役地图

    嘟嘟嘟 当看到n <= 50 的时候就乐呵了,暴力就行了,不过最暴力的方法是O(n7)……然后加一个二分边长达到O(n6logn),然后我们接着优化,把暴力比对改成O(1)的比对hash值,能达 ...

  9. [JSOI2008]Blue Mary的战役地图——全网唯一一篇dp题解

    全网唯一一篇dp题解 网上貌似全部都是哈希+二分(反正我是大概baidu了翻了翻)(还有人暴力AC了的..) 哈希还是相对于dp还是比较麻烦的. 而且正确性还有可能被卡(当然这个题不会) 而且还容易写 ...

随机推荐

  1. ubuntu18安装PacketTracer-7.2.2

    1.下载需要先注册个账号 https://www.netacad.com/zh-hans/courses/packet-tracer  2.运行.run文件 chmod +x PacketTracer ...

  2. Spring4学习回顾之路09-基于注解的方式配置bean

    一:基于注解配置Bean 首先介绍下组件扫描(component scanning): Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 包括: -@Component ...

  3. (四)循环队列 VS 数组队列 (效率对比)

    目录 背景 测试代码 结果 链表 随机访问 背景 各自完成插入 10万.20万 条随机数,然后再将这些随机数出队列 : 测试代码 /** * 测试速度 */ public String testSpe ...

  4. Windows安全日志

    在运行中输入:eventvwr.msc,即可打开事件日志. 登录类型 描述 2 互动(键盘和屏幕的登录系统) 3 网络(即连接到共享文件夹从其他地方在这台电脑上网络) 4 批处理(即计划任务) 5 服 ...

  5. 怎样解决忘加new关键字所造成的问题

    通过构造函数 "new" 一个对象出来时, 如果忘记写这个 new, 那这个构造函数就不会返回一个实例对象, 而是会像普通函数一样执行. 下面是两种规避忘记写new时所引发的问题的 ...

  6. Visual Studio container tools require Docker to be running

    处理项目在生成时报错"Visual Studio container tools require Docker to be running" 最初win10上安装docker,项目 ...

  7. T4模板生成文件要点记录

    可以使用 $(variableName) 语法引用 Visual Studio 或 MSBuild 变量(如 $(SolutionDir)),以及使用 %VariableName% 来引用环境变量.介 ...

  8. scala的泛型浅析

    1. scala泛型浅析 package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界 ...

  9. js中数组方法及分类

    数组的方法有很多,这里简单整理下常用的21种方法,并且根据它们的作用分了类,便于记忆和理解. 根据是否改变原数组,可以分为两大类,两大类又根据不同功能分为几个小类 一.操作使原数组改变   1.数组的 ...

  10. easyUi 的form和validate组件

    以下代码不能运行,只是我在学习过程中记录的笔记,但代码可以用!!! 可以按照需要截取. <%@ page language="java" contentType=" ...