大意: 给定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)的更多相关文章

  1. 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 ...

  2. 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 ...

  3. Nanami's Digital Board

    题意: 给出点(x1,y1),求以x=x1为上边界,或下边界:以y=y1为左边界,或右边界矩形的最大值(矩形内所有的点均为1) 定义四个数组lft[][],rht[][],up[][],down[][ ...

  4. 炮(棋盘DP)

    一直以为自己写的就是状态压缩,结果写完才知道是个棋盘dp 首先看一下题目 嗯,象棋 ,还是只有炮的象棋 对于方案数有几种,我第一个考虑是dfs,但是超时稳稳的,所以果断放弃 然后记得以前有过和这个题差 ...

  5. P1006 传纸条[棋盘DP]

    题目来源:洛谷 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接 ...

  6. Codeforces Round #248 (Div. 1)——Nanami&#39;s Digital Board

    题目连接 题意: 给n*m的0/1矩阵,q次操作,每次有两种:1)将x,y位置值翻转 2)计算以(x,y)为边界的矩形的面积最大值 (1 ≤ n, m, q ≤ 1000) 分析: 考虑以(x,y)为 ...

  7. codeforces248(div1) B Nanami&#39;s Digital Board

    q次询问,每次询问能够对矩阵某一个值改变(0变1.1变0) 或者是查询子矩阵的最大面积,要求这个这个点在所求子矩阵的边界上,且子矩阵各店中全为1 用up[i][j]表示(i,j)这个点向上能走到的最长 ...

  8. codeforces 682D(DP)

    题目链接:http://codeforces.com/contest/682/problem/D 思路:dp[i][j][l][0]表示a串前i和b串前j利用a[i] == b[j]所得到的最长子序列 ...

  9. codeforces 666A (DP)

    题目链接:http://codeforces.com/problemset/problem/666/A 思路:dp[i][0]表示第a[i-1]~a[i]组成的字符串是否可行,dp[i][1]表示第a ...

随机推荐

  1. 测试开发-PC客户端测试要点

      一级测试点 二级测试点 安装测试 首次安装(exe和msi格式的不同) 安装程序权限检查 软件安装包的描述和属性信息 静默安装和非静默安装测试 有UAC安装.无UAC安装 联网安装.断网安装 对必 ...

  2. Window下PHP三种运行方式图文详解,window下的php是不是单进程的?

    Window下PHP三种运行方式图文详解,window下的php是不是单进程的? PHP运行目前为止主要有三种方式: a.以模块加载的方式运行,初学者可能不容易理解,其实就是将PHP集成到Apache ...

  3. python面向对象总结!

    面向对象 Object Oriented Programming 基本单元:对象把数据和功能封装在里边,能实现很好的复用性,灵活性和扩展性. 面向对象的两个基本概念:类和对象 面向对象的基本要素:属性 ...

  4. ubuntu下交叉编译imagemagick

    环境:ubuntu16.04 交叉编译器版本号:4.8.3 在编译之前要编译以下其依赖的软件或库:freetype,libpng,libxml2,libtiff,libjpeg,zlib,graphv ...

  5. Tempter of the Bone(dfs+奇偶剪枝)题解

    Tempter of the Bone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  6. 风景区的面积及道路状况分析问题 test

    参考文献:   https://wenku.baidu.com/view/b6aed86baf1ffc4ffe47ac92.html #include <bits/stdc++.h> us ...

  7. perl入门知识(3)

    引用       在很多场合下使用引用传值,能在很大程度上提高代码的运行效率.       定义一个引用在变量名前加”\”就可以了,如:       $ra=\$a;       $rb=\@b;   ...

  8. neuroph Perceptron Sample

    错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory     ...

  9. HDU 1757 A Simple Math Problem(矩阵快速幂模板)

    题意:题意很简单,不多说了. 思路: |f(10) |       |a0 a1 a2 ...a8 a9|    |f(9)|| f(9)  |       | 1   0   0 ... 0     ...

  10. xss脚本注入后端的防护

    1.脚本注入最主要的是不要相信用户输入的任何数据,对数据进行转义 可以使用:org.springframework.web.util.HtmlUtils包中的 HtmlUtils.htmlEscape ...