UVA-1330 LA 3029 City Game(最大子矩阵)

原创 2013年12月02日 18:23:07

题意:在m*n的矩阵中,其中一些是空格子用(F)表示,其他的是阻碍物(R),找出一个全部由F组成面积最大的,输出面积乘以3.

分析:用数组up[i][j]从第i行到第j行所能达到最大的长度,lt[i][j]表示第i行的第j列向右所能达到的长度,同理rt[i][j]。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std ;

const int M=1005;
char map[M][M];
int lt[M][M],rt[M][M],up[M][M];

int main()
{
	int t,n,m,lp,rp;
    scanf("%d",&t);
    while(t--){
		int ans=0;
		scanf("%d %d",&n,&m);
		for(int i=0;i<n;i++){
	        for(int j=0;j<m;j++){
				char ch=getchar();
				while(ch!='R'&&ch!='F') ch=getchar();
				map[i][j]=ch;
	        }
		}
		for(int i=0;i<n;i++){	
			lp=-1,rp=m;
			for(int j=0;j<m;j++){
				if(map[i][j]=='R'){
					up[i][j]=lt[i][j]=0;;
					lp=j;
				}
				else{
					up[i][j]=(i==0?1:up[i-1][j]+1);
					lt[i][j]=(i==0?lp+1:max(lt[i-1][j],lp+1));
				}
			}
			for(int j=m-1;j>=0;j--){
			
				if(map[i][j]=='R'){
					rt[i][j]=m;
					rp=j;
				}
				else{
					rt[i][j]=(i==0? rp-1:min(rt[i-1][j],rp-1));
					ans=max(ans,up[i][j]*(rt[i][j]-lt[i][j]+1));
				}
			}	
		}	
		printf("%d\n",ans*3);
    }
 	return 0 ;
}


相关文章推荐

最大子矩阵,City Game,SEERC 2004,LA3029

给定一个MN的矩阵,其中一些格子是空地(F),其他是障碍(R),找出一个全部由F组成的面积最大的子矩阵。JAVA代码给出O(N^2)算法。 参考文献:《算法竞赛入门经典训练指南》P51,刘汝佳,...

UVa 1330 - City Game 最大子矩阵

Bob is a strategy game programming specialist. In his new city building game the gaming environment ...
  • cyendra
  • cyendra
  • 2013年06月15日 10:59
  • 595

hdu 1505 City Game(0和1 中的最大子矩阵)

City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota...

暑期dp46道(9)——HDU 1505City Game 求最大子矩阵面积

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 可参考本人dp46道(8)的部分思路 这题是1506的变形,但是我个人觉得这个是比1505简...
  • ADjky
  • ADjky
  • 2016年08月02日 20:25
  • 146

例题1.22 最大子矩阵 UVa1330

1.题目描述:点击打开链接 2.解题思路:本题利用扫描法解决:从上向下扫描每一行,如果我们把每个格子向上延伸的连续空格看做一条悬线,并用up(i,j),left(i,j),right(i,j)表示格...

City Game (最大子矩阵)

City Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota...

UVa 108 Maximum Sum (贪心&最大子矩阵和)

108 - Maximum Sum Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlineju...

UVA - 10827 Maximum sum on a torus(dp最大子矩阵和)

题目大意: 经典的最大连续和问题的变形,从一串数变成矩阵,且行列首尾相连; 解析: 1. 如何解决首尾相连的问题,可以将矩阵拓展为原来的4倍。 2. 对付矩阵,降维,将多行累加到一行;...

uva 108 Maximum Sum 最大子矩阵和

思路说明:                 简单的说求最大子矩阵和,先将矩阵转化为一维,然后在一维区间上求最大子区间和 详细解释:                 子矩阵在列上可以变化,行上也可以变化...
  • dalewzm
  • dalewzm
  • 2013年10月20日 02:52
  • 570

游泳圈的最大子矩阵和

  • 2012年11月07日 20:36
  • 844B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA-1330 LA 3029 City Game(最大子矩阵)
举报原因:
原因补充:

(最多只允许输入30个字)