BZOJ1057或洛谷1169 [ZJOI2007]棋盘制作
BZOJ原题链接
洛谷原题链接
设\(L[i][j],R[i][j],H[i][j]\)表示点\((i,j)\)向左、右、上尽量拓展的左端点、右端点、上端点的坐标。
\(L,R\)直接初始化好,\(H\)则全部为\(1\)。
扫过整个矩阵,对于每个点,尽量去拓展上端点,并更新\(L[i][j] = \max\{ L[i][j], L[i - 1][j] \}, R[i][j] = \min\{ R[i][j], R[i - 1][j] \}, H[i][j] = H[i - 1][j] + 1\),然后尝试去更新答案即可。
不得不吐糟一句,某谷的数据是真的水。
#include<cstdio>
using namespace std;
const int N = 2010;
int a[N][N], L[N][N], R[N][N], H[N][N];
inline int re()
{
int x = 0;
char c = getchar();
bool p = 0;
for (; c < '0' || c > '9'; c = getchar())
p |= c == '-';
for (; c >= '0' && c <= '9'; c = getchar())
x = x * 10 + c - '0';
return p ? -x : x;
}
inline int maxn(int x, int y)
{
return x > y ? x : y;
}
inline int minn(int x, int y)
{
return x < y ? x : y;
}
inline int squ(int x)
{
return x * x;
}
int main()
{
int i, j, n, m, l, sq = 1, rec = 1;
n = re();
m = re();
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
{
a[i][j] = re();
L[i][j] = R[i][j] = j;
H[i][j] = 1;
}
for (i = 1; i <= n; i++)
for (j = 2; j <= m; j++)
if (a[i][j] ^ a[i][j - 1])
L[i][j] = L[i][j - 1];
for (i = 1; i <= n; i++)
for (j = m - 1; j; j--)
if (a[i][j] ^ a[i][j + 1])
R[i][j] = R[i][j + 1];
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
{
if (i > 1 && a[i][j] ^ a[i - 1][j])
{
L[i][j] = maxn(L[i][j], L[i - 1][j]);
R[i][j] = minn(R[i][j], R[i - 1][j]);
H[i][j] = H[i - 1][j] + 1;
}
l = R[i][j] - L[i][j] + 1;
sq = maxn(sq, squ(minn(l, H[i][j])));
rec = maxn(rec, l * H[i][j]);
}
printf("%d\n%d", sq, rec);
return 0;
}
BZOJ1057或洛谷1169 [ZJOI2007]棋盘制作的更多相关文章
- 洛谷1169 [ZJOI2007] 棋盘制作
题目链接 题意概述:给出由0 1构成的矩阵,求没有0 1 相邻的最大子矩阵的最大子正方形. 解题思路:设f[i][j]表示i j向上能到哪,l[i][j] r[i][j]表示向左/右,转移时分开计算矩 ...
- 洛谷 P1169 [ZJOI2007]棋盘制作
2016-05-31 14:56:17 题目链接: 洛谷 P1169 [ZJOI2007]棋盘制作 题目大意: 给定一块矩形,求出满足棋盘式黑白间隔的最大矩形大小和最大正方形大小 解法: 神犇王知昆的 ...
- 洛谷P1169 [ZJOI2007]棋盘制作 悬线法 动态规划
P1169 [ZJOI2007]棋盘制作 (逼着自己做DP 题意: 给定一个包含0,1的矩阵,求出一个面积最大的正方形矩阵和长方形矩阵,要求矩阵中相邻两个的值不同. 思路: 悬线法. 用途: 解决给定 ...
- 【题解】洛谷P1169 [ZJOI2007] 棋盘制作(坐标DP+悬线法)
次元传送门:洛谷P1169 思路 浙江省选果然不一般 用到一个从来没有听过的算法 悬线法: 所谓悬线法 就是用一条线(长度任意)在矩阵中判断这条线能到达的最左边和最右边及这条线的长度 即可得到这个矩阵 ...
- 洛谷 P1169 [ZJOI2007]棋盘制作 (悬线法)
和玉蟾宫很像,条件改成不相等就行了. 悬线法题目 洛谷 P1169 p4147 p2701 p1387 #include<cstdio> #include<algorithm& ...
- [洛谷P1169] [ZJOI2007] 棋盘制作 解题报告(悬线法+最大正方形)
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个 8×8 大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我 ...
- 洛谷P1169[ZJOI2007]棋盘制作
题目 一道悬线法的裸题,悬线法主要是可以处理最大子矩阵的问题. 而这道题就是比较经典的可以用悬线法来处理的题. 而悬线法其实就是把矩阵中对应的每个位置上的元素分别向左向上向右,寻找到不能到达的地方,然 ...
- Luogu 1169 [ZJOI2007]棋盘制作 - 动态规划+单调栈
Description 给一个01矩阵, 求出最大的01交错的正方形和最大的01交错的矩阵 Solution 用动态规划求出最大的正方形, 用单调栈求出最大的矩阵. 在这里仅介绍求出最大正方形(求最大 ...
- luogu 1169 [ZJOI2007]棋盘制作 悬线dp
悬线法,虽然得不到局部最优解,但是一定能得到全局最优解的算法,十分神奇~ #include <cstdio> #include <algorithm> #define N 20 ...
随机推荐
- Spark之机器学习(Python版)(一)——聚类
https://www.cnblogs.com/charlotte77/p/5437611.html
- 用工厂模式和策略模式优化过多的if-else
多个if-else代码: @RunWith(SpringRunner.class) @SpringBootTest public class EducationalBackgroundTest { p ...
- python安装与IO编程
<python爬虫开发与项目实战>基础篇(一) 一.python安装 1.python IDLE 下载官网:www.python.org 注:在选择安装组件时勾选所有组件,特别注意勾选pi ...
- linux 设备驱动分类
1. 字符设备 :在I/O传输过程中以字符为单位. 2. 块设备: 在传输过程中以块为单位,相关概念有 缓冲,I/O调度,请求队列.主要体现出与字符设备在操作硬件的接口实现方式上是不一样的. 3. 网 ...
- mysql 和 Oracle 数据类型对照
MySQL与Oracle两种数据库在工作中,都是用的比较多的数据库,由于MySQL与Oracle在数据类型上有部分差异,在我们迁移数据库时,会遇上一定的麻烦,下面介绍MySQL与Oracle数据库数据 ...
- devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior
问题: 制作镜像的时候报错 devmapper: Thin Pool has 162394 free data blocks which is less than minimum required 1 ...
- 面向对象程序设计(Java)本学期课程改革说明
1.教学方式采用反转课堂教学法,学生课前完成知识的学习,课堂是师生之间.学生之间互动的场所,包括答疑解惑.知识的运用技巧探讨等,教师的课堂责任是理解学生的问题和引导学生去运用知识. 2.为更好地执行反 ...
- Python gevent
1\协程 import geventfrom gevent import monkeyimport requestsfrom bs4 import BeautifulSoupimport thread ...
- Spring集成MyBatis的使用-使用Mapper映射器
Spring集成MyBatis使用 前面复习MyBatis时,发现在测试时,需要手动创建sqlSessionFactory,Spring将帮忙自动创建sqlSessionFactory,并且将自动扫描 ...
- jquery使用FormData提交数据
在jquery中,使用ajax提交表单数据. FormData可以很方便地获取到表单中的所有数据. 注意: ajax中的data参数为FormData类型时,contentType就不要设置成appl ...