Nanami's Digital Board CodeForces - 434B (棋盘dp)
大意: 给定01矩阵, m个操作, 操作1翻转一个点, 操作2求边界包含给定点的最大全1子矩阵
暴力枚举矩形高度, 双指针统计答案
#include <iostream>
#include <algorithm>
#include <math.h>
#include <cstdio>
#include <set>
#include <map>
#include <string>
#include <vector>
#include <string.h>
#include <queue>
#define PER(i,a,n) for(int i=n;i>=a;--i)
#define REP(i,a,n) for(int i=a;i<=n;++i)
using namespace std; const int N = 1e3+10, INF = 0x3f3f3f3f;
int n, m, q;
int a[N][N], U[N][N], D[N][N], L[N][N], R[N][N]; void init() {
REP(i,1,n) REP(j,1,m) if (a[i][j]) {
U[i][j]=U[i-1][j]+1;
L[i][j]=L[i][j-1]+1;
}
PER(i,1,n) PER(j,1,m) if (a[i][j]) {
D[i][j]=D[i+1][j]+1;
R[i][j]=R[i][j+1]+1;
}
} void update(int x, int y) {
a[x][y] ^= 1;
REP(i,1,n) U[i][y]=(a[i][y]?U[i-1][y]+1:0);
PER(i,1,n) D[i][y]=(a[i][y]?D[i+1][y]+1:0);
REP(i,1,m) L[x][i]=(a[x][i]?L[x][i-1]+1:0);
PER(i,1,m) R[x][i]=(a[x][i]?R[x][i+1]+1:0);
} int query(int x, int y) {
int ans = 0, t = U[x][y], l = y, r = y;
PER(i,1,U[x][y]) {
while (l>1&&U[x][l-1]>=i) --l;
while (r<m&&U[x][r+1]>=i) ++r;
if (U[x][l]>=i&&U[x][r]>=i) {
ans = max(ans, i*(r-l+1));
}
}
t = D[x][y], l = y, r = y;
PER(i,1,D[x][y]) {
while (l>1&&D[x][l-1]>=i) --l;
while (r<m&&D[x][r+1]>=i) ++r;
if (D[x][l]>=i&&D[x][r]>=i) {
ans = max(ans, i*(r-l+1));
}
}
t = L[x][y], l = x, r = x;
PER(i,1,L[x][y]) {
while (l>1&&L[l-1][y]>=i) --l;
while (r<n&&L[r+1][y]>=i) ++r;
if (L[l][y]>=i&&L[r][y]>=i) {
ans = max(ans, i*(r-l+1));
}
}
t = R[x][y], l = x, r = x;
PER(i,1,R[x][y]) {
while (l>1&&R[l-1][y]>=i) --l;
while (r<n&&R[r+1][y]>=i) ++r;
if (R[l][y]>=i&&R[r][y]>=i) {
ans = max(ans, i*(r-l+1));
}
}
return ans;
} int main() {
scanf("%d%d%d", &n, &m, &q);
REP(i,1,n) REP(j,1,m) scanf("%d", &a[i][j]);
init();
REP(i,1,q) {
int op, x, y;
scanf("%d%d%d", &op, &x, &y);
if (op==1) update(x,y);
else printf("%d\n", query(x,y));
}
}
Nanami's Digital Board CodeForces - 434B (棋盘dp)的更多相关文章
- codeforces 434B B. Nanami's Digital Board(分治)
题目链接: B. Nanami's Digital Board time limit per test 1 second memory limit per test 256 megabytes inp ...
- Codeforces Round #248 (Div. 1) B. Nanami's Digital Board 暴力 前缀和
B. Nanami's Digital Board 题目连接: http://www.codeforces.com/contest/434/problem/B Description Nanami i ...
- Nanami's Digital Board
题意: 给出点(x1,y1),求以x=x1为上边界,或下边界:以y=y1为左边界,或右边界矩形的最大值(矩形内所有的点均为1) 定义四个数组lft[][],rht[][],up[][],down[][ ...
- 炮(棋盘DP)
一直以为自己写的就是状态压缩,结果写完才知道是个棋盘dp 首先看一下题目 嗯,象棋 ,还是只有炮的象棋 对于方案数有几种,我第一个考虑是dfs,但是超时稳稳的,所以果断放弃 然后记得以前有过和这个题差 ...
- P1006 传纸条[棋盘DP]
题目来源:洛谷 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接 ...
- Codeforces Round #248 (Div. 1)——Nanami's Digital Board
题目连接 题意: 给n*m的0/1矩阵,q次操作,每次有两种:1)将x,y位置值翻转 2)计算以(x,y)为边界的矩形的面积最大值 (1 ≤ n, m, q ≤ 1000) 分析: 考虑以(x,y)为 ...
- codeforces248(div1) B Nanami's Digital Board
q次询问,每次询问能够对矩阵某一个值改变(0变1.1变0) 或者是查询子矩阵的最大面积,要求这个这个点在所求子矩阵的边界上,且子矩阵各店中全为1 用up[i][j]表示(i,j)这个点向上能走到的最长 ...
- codeforces 682D(DP)
题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列 ...
- codeforces 666A (DP)
题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...
随机推荐
- linux常用命令:find 命令参数详解
find一些常用参数的一些常用实例和一些具体用法和注意事项. 1.使用name选项: 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用. 可以使用某种文件名模式来匹配 ...
- Bootstrap+AngularJS对话框实例
<script type="text/javascript" src="/assets/JS/plugins/jquery.min.js">< ...
- Nginx能做什么
本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流. Ngi ...
- [转] Python的import初探
转载自:http://www.lingcc.com/2011/12/15/11902/#sec-1 日常使用python编程时,为了用某个代码模块,通常需要在代码中先import相应的module.那 ...
- Redis 如何正确实现分布式锁
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁.虽然网上已经有各种介 ...
- trace
linux 下程序的系统调用和信号调用跟踪工具 http://www.cnblogs.com/qingquan/archive/2011/07/18/2110072.html
- CSS 基础知识点 样式 选择器 伪类
CSS 基础知识点汇集 版权声明:这篇博客是别人写的,大神博客地址 : https://www.cnblogs.com/Mtime/p/5184685.html 1.CSS 简介 CSS 指层叠样式表 ...
- 20145327《网络对抗》——注入shellcode并执行和Return-to-libc攻击深入
20145327<网络对抗>--注入shellcode并执行 准备一段Shellcode 老师的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68 ...
- JavaScript:Function/Object/prototype/__proto__
console.log(Object.__proto__===Function.prototype); //true console.log(Object.prototype.__proto__); ...
- icpc 2017北京 J题 Pangu and Stones 区间DP
#1636 : Pangu and Stones 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 In Chinese mythology, Pangu is the fi ...