[洛谷P2216][HAOI2007]理想的正方形
题目大意:有一个$a\times b$的矩阵,求一个$n\times n$的矩阵,使该区域中的极差最小。
题解:二维$ST$表,每一个点试一下是不是左上角就行了
卡点:1.用了一份考试时候写的二维$ST$表,是矩阵的,然后$MLE$
2.改了一下,$i,k$狂写错
C++ Code:
#include <cstdio>
#define maxn 1005
int S[maxn][maxn][11], M[maxn][maxn][11];
int n, m, p, K, P;
int LG[maxn], pw[maxn];
inline int max(int a, int b) {return a > b ? a : b;}
inline int min(int a, int b) {return a < b ? a : b;}
inline int getS(int a, int b) {
int c = a + p, d = b + p;
int l = max(S[a][b][K], S[c - P][b][K]),
r = max(S[a][d - P][K], S[c - P][d - P][K]);
return max(l, r);
}
inline int getM(int a, int b) {
int c = a + p, d = b + p;
int l = min(M[a][b][K], M[c - P][b][K]),
r = min(M[a][d - P][K], M[c - P][d - P][K]);
return min(l, r);
}
int main() {
scanf("%d%d%d", &n, &m, &p);
for (register int i = 1; i <= n; i++) {
for (register int j = 1; j <= m; j++) scanf("%d", &S[i][j][0]), M[i][j][0] = S[i][j][0];
}
LG[0] = -1; for (int i = 1; i < maxn; i++) LG[i] = LG[i >> 1] + 1; K = LG[p];
pw[0] = 1; for (int i = 1; i < 100; i++) pw[i] = pw[i - 1] * 2ll % 20040826; P = pw[K];
for (register int k = 1; k < 11; k++) {
for (register int i = 1; i <= n; i++) {
for (register int j = 1; j <= m; j++) {
S[i][j][k] = max(max(S[i][j][k - 1], S[i][min(m, j + pw[k - 1])][k - 1]),
max(S[min(n, i + pw[k - 1])][j][k - 1], S[min(n, i + pw[k - 1])][min(m, j + pw[k - 1])][k - 1]));
M[i][j][k] = min(min(M[i][j][k - 1], M[i][min(m, j + pw[k - 1])][k - 1]),
min(M[min(n, i + pw[k - 1])][j][k - 1], M[min(n, i + pw[k - 1])][min(m, j + pw[k - 1])][k - 1]));
}
}
}
int ans = 0x3f3f3f3f;
for (int i = 1; i <= n - p + 1; i++) {
for (int j = 1; j <= m - p + 1; j++) {
ans = min(ans, getS(i, j) - getM(i, j));
}
}
printf("%d\n", ans);
return 0;
}
[洛谷P2216][HAOI2007]理想的正方形的更多相关文章
- 洛谷 P2216 [HAOI2007]理想的正方形
P2216 [HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一 ...
- 洛谷P2216: [HAOI2007]理想的正方形 单调队列优化DP
洛谷P2216 )逼着自己写DP 题意: 给定一个带有数字的矩阵,找出一个大小为n*n的矩阵,这个矩阵中最大值减最小值最小. 思路: 先处理出每一行每个格子到前面n个格子中的最大值和最小值.然后对每一 ...
- 洛谷 P2216 [HAOI2007]理想的正方形 || 二维RMQ的单调队列
题目 这个题的算法核心就是求出以i,j为左上角,边长为n的矩阵中最小值和最大值.最小和最大值的求法类似. 单调队列做法: 以最小值为例: q1[i][j]表示第i行上,从j列开始的n列的最小值.$q1 ...
- 洛谷P2216 HAOI2007 理想的正方形 (单调队列)
题目就是要求在n*m的矩形中找出一个k*k的正方形(理想正方形),使得这个正方形内最值之差最小(就是要维护最大值和最小值),显然我们可以用单调队列维护. 但是二维平面上单调队列怎么用? 我们先对行处理 ...
- 【DP】【单调队列】洛谷 P2216 [HAOI2007]理想的正方形 题解
算是单调队列的复习吧,不是很难 题目描述 有一个$a\times b$的整数组成的矩阵,现请你从中找出一个$n\times n$的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 ...
- 洛谷 P2216 [HAOI2007]理想正方形
洛谷 巨说这是一道单调队列好题,但是我并不是用单调队列做的诶. 如果往最暴力的方向去想,肯定是\(n^3\)的\(dp\)了. \(f[i][j][k]\)代表当前正方形的左上角定点是\((i,j)\ ...
- BZOJ1047或洛谷2216 [HAOI2007]理想的正方形
BZOJ原题链接 洛谷原题链接 显然可以用数据结构或\(ST\)表或单调队列来维护最值. 这里采用单调队列来维护. 先用单调队列维护每一行的最大值和最小值,区间长为正方形长度. 再用单调队列维护之前维 ...
- 洛谷 2216 [HAOI2007]理想的正方形
题目戳这里 一句话题意 给你一个a×b的矩形,求一个n×n的子矩阵,矩阵里面的最大值和最小值之差最小. Solution 这个题目许多大佬都是单调队列,但是我不是很会,只好用了比较傻逼的方法: 首先我 ...
- P2216 [HAOI2007]理想的正方形 (单调队列)
题目链接:P2216 [HAOI2007]理想的正方形 题目描述 有一个 \(a\times b\)的整数组成的矩阵,现请你从中找出一个 \(n\times n\)的正方形区域,使得该区域所有数中的最 ...
随机推荐
- socket传送二进制流的一些总结
第一次实质性的接触socket通信方面的工作,所以遇到的问题还真不少,写篇博客记录一下,提升下记忆. 需求是通过私有协议进行二进制数据的传输,必须保证数据包不能被丢失,所以选择tcp的socket进行 ...
- Java分享笔记:使用缓冲流复制文件
[1] 程序设计 /*------------------------------- 1.缓冲流是一种处理流,用来加快节点流对文件操作的速度 2.BufferedInputStream:输入缓冲流 3 ...
- 关于Ubuntu 16.04 pip安装Docker-Compose
$ sudo apt-get update 安装pip: $ sudo apt-get install python-pip 卸载旧版本docker-compose: $ sudo pip unins ...
- JSP页面字符集设置
错误提示: HTTP Status 500 - /test1.jsp (line: 2, column: 1) Page directive must not have multiple occurr ...
- datatables 给字段设置默认值,屏蔽没有字段的错误
我们返回的数据不能保证都是正常的,可能包含 null ,显然这个对于最终用户来说是不友好的,那么我们可以这么处理 先有如下数据格式: //示例数据 { data:[ {"id":1 ...
- centOS初了解--***安装node
在***买了一个VPS,用了差不多一年了,除了做FQ使用之外,同时也下载了一个node,用了express搭建了一个服务,同时我在博客园有博客,我也懒得转来转去了,直接做了一个重定向,跳转到了博客园. ...
- ES6笔记01-声明变量
ES6只有六种声明变量的方法:var命令和function命令,let和const命令,import命令和class命令.所以,ES6一共有6种声明变量的方法. const声明一个只读的常量.一旦声明 ...
- asp.net core-项目开发中问题汇总
无法启动进程\Program File\dotnet\dotnet.exe.进程创建失败,出现错误:系统找不到指定的文件如下图: 解放方案:1.修改系统环境变量 2.重启电脑
- Laravel Nginx 除 `/` 外所有路由 404
解决方法 在nginx配置添加以下设置: location / { try_files $uri $uri/ /index.php?$query_string; } 详见Laravel官方文档:htt ...
- tp5简单构造
application 应用目录 网站核心index前台目录 controller 控制器admin 后台目录 model 数据模型view 视图extend 静态类库目录public 静态资源和入口 ...