博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
codeforces 375B B. Maximum Submatrix 2(dp)
阅读量:3710 次
发布时间:2019-05-21

本文共 1949 字,大约阅读时间需要 6 分钟。

题目链接:


题目大意:

给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积。


题目分析:

  • 我们有一种模型,就是对于不互换行的01矩阵求最大面积,就是固定子矩阵的右下角,记录h[i][j]就是当前位置的高度,然后向左延展的距离,枚举所有的即可。
  • 代码如下:
#include 
#include
#include
#include
#define MAX 5007using namespace std;int n,m;char mp[MAX][MAX];int lef[MAX];int h[MAX][MAX];int main ( ){ while ( ~scanf ( "%d%d" , &n , &m )) { for ( int i = 1 ; i <= n ; i++ ) scanf ( "%s" , mp[i]+1 ); memset ( h , 0 , sizeof ( h )); int ans = 0; for ( int i = 1 ; i <= n ; i++ ) { for ( int j = 1 ; j <= m ; j++ ) { if ( mp[i][j] == '0' ) h[i][j] = 0; else if ( i == 1 || mp[i-1][j]=='0') h[i][j] = 1; else h[i][j] = h[i-1][j]+1; if ( j == 1 || h[i][j-1] < h[i][j] ) lef[j] = j; else lef[j] = lef[j-1]; } for ( int j = 1 ; j <= m ; j++ ) ans = max ( ans , (j-lef[j]+1)*h[i][j] ); } printf ( "%d\n" , ans ); }}
  • 那么对于可以行互换的,我们已经记录每个点能够向左延展的距离,定义状态dp[j][i]代表第j列的第i行的元素向左延展的最远距离,然后我们对这个距离排序,从大到小,每个上面的都可以被下面的拓展,那么依旧是枚举每个右下角,取最大的结果。

AC代码:

#include 
#include
#include
#include
#define MAX 5007using namespace std;int n,m;int dp[MAX][MAX];char mp[MAX][MAX];int main (){ while ( ~scanf ( "%d%d" , &n , &m )) { for ( int i = 1 ; i<= n ; i++ ) scanf ( "%s" , mp[i]+1 ); for ( int i= 1 ; i <= n ; i++ ) for ( int j = 1 ; j <= m ; j++ ) if ( mp[i][j] == '1' ) dp[j][i] = dp[j-1][i]+1; else dp[j][i] = 0; int ans = 0; for ( int i = 1 ; i <= m ; i++ ) { sort ( dp[i]+1 , dp[i]+n+1 ); for ( int j = n ; j > 0 ; j-- ) ans = max ( ans , dp[i][j]*(n-j+1) ); } printf ( "%d\n" , ans ); }}

转载地址:http://bqvjn.baihongyu.com/

你可能感兴趣的文章
L1-002 打印沙漏 (20分) C++版 AC代码
查看>>
L1-005 考试座位号 (15分) C++版 AC代码
查看>>
L1-049 天梯赛座位分配 (20分) AC代码
查看>>
L1-006 连续因子 (20分) C++版 AC代码
查看>>
C# 计算器窗体程序
查看>>
虚拟机安装winxp系统出现 non-bootable disk 80 的解决办法
查看>>
鼠标指针乱跑的解决方案
查看>>
Windows消息函数
查看>>
C语言编程0基础学习历程(1)——Hello ,World !
查看>>
C语言编程0基础学习历程(2)—— 常量和变量
查看>>
C语言编程0基础学习历程(3)—— 输入输出
查看>>
C语言编程0基础学习历程(4)—— C的运算与表达式
查看>>
C语言编程0基础学习历程(5)——C的选择控制结构
查看>>
Ubuntu 安装java配置环境
查看>>
Ubuntu 安装Tomcat
查看>>
阿里云服务器 Ubuntu Mysql数据库无法连接
查看>>
TCP三次握手与四次挥手详解
查看>>
Aistudio项目找不到**.so文件
查看>>
ENSP 静态路由加VLANIF实例
查看>>
enspVLAN 实战项目
查看>>