Wannafly模拟赛 矩阵 二维矩阵hash
来源:互联网 发布:dnf端口辅助 编辑:程序博客网 时间:2024/05/20 13:18
题目:
https://www.nowcoder.com/acm/contest/submit/f8363c912a4c48a28b80f47e7102b6b8?ACMContestId=2&tagId=4
题意:
题目描述
给出一个n * m的矩阵。让你从中发现一个最大的正方形。使得这样子的正方形在矩阵中出现了至少两次。输出最大正方形的边长。
输入描述:
第一行两个整数n, m代表矩阵的长和宽;
接下来n行,每行m个字符(小写字母),表示矩阵;
输出描述:
输出一个整数表示满足条件的最大正方形的边长。
思路:
二维hash,先对每一行hash一次,然后在此基础上对每一行hash一次
#include <bits/stdc++.h>using namespace std;typedef unsigned long long ull;const int N = 500 + 10, INF = 0x3f3f3f3f;const int seed = 131, Seed = 1789;char ori[N][N];ull hash1[N][N], seed_pow[N];ull hash2[N][N], Seed_pow[N];ull a[N*N];int n, m;bool check(int k){ int tot = 0; for(int i = k; i <= n; i++) { for(int j = k; j <= m; j++) { ull tmp = hash2[i][j] - hash2[i-k][j] * Seed_pow[k] - hash2[i][j-k] * seed_pow[k] + hash2[i-k][j-k] * Seed_pow[k] * seed_pow[k]; //ull tmp = hash2[i][j] - hash2[i-k][j] * Seed_pow[k] - (hash2[i][j-k] - hash2[i-k][j-k] * Seed_pow[k]) * seed_pow[k]; a[++tot] = tmp; } } sort(a + 1, a + 1 + tot); for(int i = 1; i <= tot-1; i++) if(a[i] == a[i+1]) return true; return false;}int main(){ seed_pow[0] = Seed_pow[0] = 1; for(int i = 1; i < N; i++) { seed_pow[i] = seed_pow[i-1] * seed; Seed_pow[i] = Seed_pow[i-1] * Seed; } scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) scanf(" %s", ori[i] + 1); for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) hash1[i][j] = hash1[i][j-1] * seed + ori[i][j]; for(int i = 1; i <= m; i++) for(int j = 1; j <= n; j++) hash2[j][i] = hash2[j-1][i] * Seed + hash1[j][i]; int ans = 0; int l = 0, r = min(n, m); while(l <= r) { int mid = (l + r) >> 1; if(check(mid)) ans = mid, l = mid + 1; else r = mid - 1; } printf("%d\n", ans); return 0;}
阅读全文
0 0
- Wannafly模拟赛 矩阵 二维矩阵hash
- Wannafly模拟赛 矩阵 [矩阵hash+二分]
- 牛客网 Wannafly模拟赛 矩阵 二分+hash矩阵
- 牛客网 Wannafly模拟赛 矩阵 二分+hash矩阵
- 【大二最后一题】Wannafly模拟赛 矩阵【二分+二维字符串Hash】
- [BZOJ]2462: [BeiJing2011]矩阵模板 二维hash
- Wannafly模拟赛3 贝伦卡斯泰露 【折半搜索+hash,状压dp】
- 二维矩阵
- BZOJ 2462 BeiJing 2011 矩阵模板 二维hash
- BZOJ 2462 BeiJing 2011 矩阵模板 二维hash
- 10.9wannafly模拟赛
- Wannafly模拟赛4
- Wannafly模拟赛3
- 二维矩阵实现矩阵相乘
- 【JZOJ5270】【GDOI2018模拟】神奇的矩阵(二维线段树)
- bzoj2462(矩阵二维hash)……不会的题就hash
- bzoj1141(矩阵hash)
- 矩阵hash + KMP
- Apache相同ip通过多个端口配置虚拟主机
- BZOJ 3511: 土地划分 最小割
- web.xml的配置中<context-param> 作用
- USACO-Section2.2 Preface Numbering
- 摇杆制作
- Wannafly模拟赛 矩阵 二维矩阵hash
- 四旋翼飞行器教学笔记1 ——四轴飞行器飞行原理简介
- java编程思想之操作符
- Laravel操作数据库
- STM32开发环境搭建
- 抽象工厂模式
- 你在那里,我却在这里
- LeetCode有问题的代码
- jquery deferred对象 then(),when()方法 ,解决回调函数嵌套