UVaLive(LA) 3029 City Game,SEERC 2004题解
来源:互联网 发布:基础地理数据分类 编辑:程序博客网 时间:2024/06/01 08:01
Vjudge传送门
题意:
这道题是要我们找出一个面积最大的子矩阵。然后让我们输出这个矩阵的面积乘3的结果(其实我不是特别明白为什么要乘三,乘三难道会让这道题的难度陡增???),然后矩阵描述是R和F,F表示是空地,R表示是障碍,只有是空地的地方才可以被划为子矩阵…
举个例子
F F F
F F R
R F F
的答案是2
题解:
显然我们这道题如果直接暴力的话,会非常难受,虽然我们可以维护01矩阵的二维前缀和,但即便是这样,也是非常难受的因为,n和m的范围是1000,而你维护了二维前缀和之后的时间至少是
所以我们的做法其实很简单,维护一个
再维护一个
表示我们可以从这个点最多追溯到左边的某个点
再维护一个
…垃圾latex没法对齐(显然是我不懂latex语法)
比如这个
我们稍加思考(当然
可以发现如下转移方程
其中
同理
于是我们就可以开始愉快地进行递(动态)推(规划)啦
代码:
#include<cstdio>#include<algorithm> using namespace std; const int MAXN=1000;int mat[MAXN][MAXN],up[MAXN][MAXN],Left[MAXN][MAXN],Right[MAXN][MAXN];int main(){int T; scanf("%d",&T); while(T--){ int n,m; scanf("%d%d",&m,&n); for(register int i=0;i<m;i++){ for(register int j=0;j<n;j++){ int ch=getchar();while(ch!='F'&&ch!='R') ch=getchar(); mat[i][j]=ch=='F'?0:1; } } int ans=0; for(register int i=0;i<m;i++){ int lo=-1,ro=n; for(register int j=0;j<n;j++){ if(mat[i][j]==1){ Left[i][j]=up[i][j]=0;lo=j; }else{ up[i][j]=i==0?1:up[i-1][j]+1; Left[i][j]=i==0?lo+1:max(Left[i-1][j],lo+1); } } for(register int j=n-1;j>=0;j--){ if(mat[i][j]==1){ Right[i][j]=n;ro=j; }else{ Right[i][j]=(i==0)?ro-1:min(Right[i-1][j],ro-1); ans=max(ans,up[i][j]*(Right[i][j]-Left[i][j]+1)); } } } printf("%d\n",ans*3); } return 0;}
阅读全文
0 0
- UVaLive(LA) 3029 City Game,SEERC 2004题解
- UVA 1330 LA 3029 seerc 2004 - City Game
- UVaLive 2678(LA)Subsequence SEERC 2006 题解
- SEERC 2004 / UVa 1330 City Game (扫描)
- LA 3029 - City Game
- LA 3029 City Game
- LA 3029 City Game .
- UVALive 3029 City Game
- LA 3029(p50)----City Game
- 最大子矩阵,City Game,SEERC 2004,LA3029
- SEERC 2004,LA 3029最大子矩阵
- UVALive - 3029 City Game 推理
- LA 3029 City Game [扫描线][DP]
- LA -- 3029 City Game 【思维 + dp】
- HDU 1505 UVALive 3029 City Game
- UVALive 3029 City Game (扫描维护)
- UVA-1330 LA 3029 City Game(最大子矩阵)
- LA 3029 - City Game (模拟&技巧)好题
- iOS 10.3 这些新变化你应该知道
- 网络开发面试小题
- 梯度下降(Gradient Descent)
- zookeeper安装及配置
- 几个有点生疏的小方法:substr()、match()、pop()、map()
- UVaLive(LA) 3029 City Game,SEERC 2004题解
- Mac开发必备工具(二)—— iTerm 2
- respond.js解决IE6~8的响应式布局问题
- PHP使用CURL详解
- apk转smali转dex转jar转class
- HBase分布式集群搭建
- java多线程学习
- Android快速开发框架
- android 设置app版本号