LA -- 3029 City Game 【思维 + dp】
来源:互联网 发布:全自动猫厕所 知乎 编辑:程序博客网 时间:2024/06/14 09:45
传送门
//题意: 给出一个只有F,R组成的矩阵, 找出一个最大全由F组成的矩阵, 并将它的面积乘3输出.
//思路: 还是类似于扫描法, 维护几个值, up[i][j]代表格子i,j 往上最大能走的空格数. left[i][j]代表格子i,j 往左最大能走的空格数. right[i][j]代表格子i,j 往右最大能走的空格数. 那么怎么计算了. 如果第i行第j列不是空格, 那么三个数组的值都为0. 否则up[i][j] = up[i-1][j] + 1. left[i][j] = max(left[i-1][j], lo + 1), lo 代表是第i行第j列左边的最近障碍格的列编号. right[i]][j] = min(right[i-1][j], ro - 1), ro的含义和lo类似. 取min, max就是根据它形成的矩形来说的. 那么我们事先从左到右维护好left和up, 再从右到左维护right, 顺便更新答案.
AC Code
/** @Cain*/const int maxn=1e3+5;int cas=1;int mapp[maxn][maxn; // !!!int up[maxn][maxn],l[maxn][maxn],r[maxn][maxn];void solve(){ int n,m; Fill(up,0); Fill(l,0); Fill(r,0); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ char s[10] = {0}; scanf("%s",s); mapp[i][j] = s[0] == 'F'?1:-1; //转化为数字矩阵. } } int res = 0; for(int i=1;i<=n;i++){ int lo=0; for(int j=1;j<=m;j++){ if(mapp[i][j] == -1) { up[i][j] = l[i][j] = 0; lo = j; } else { up[i][j] = up[i-1][j] + 1; l[i][j] = max(l[i-1][j],lo+1); } } int ro = m+1; for(int j=m;j>=1;j--){ if(mapp[i][j] == -1) { r[i][j] = m+1; //right取0的真实含义是不能取它, 因为我们取的min //所以就把它的值设为最大, 那么就不会取到它了. ro = j; } else { r[i][j] = i==1?ro-1:min(r[i-1][j],ro-1); res = max(res,up[i][j] * (r[i][j]-l[i][j]+1)); //更新答案. } } } printf("%d\n",res*3);}
阅读全文
0 0
- LA -- 3029 City Game 【思维 + dp】
- LA 3029 City Game [扫描线][DP]
- LA 3029 - City Game
- LA 3029 City Game
- LA 3029 City Game .
- LA 3029 City Game (DP||单调栈)
- LA 3029(p50)----City Game
- HDU-1505-City Game【dp】【思维】
- UVA-1330 LA 3029 City Game(最大子矩阵)
- UVA 1330 LA 3029 seerc 2004 - City Game
- LA 3029 - City Game (模拟&技巧)好题
- UVaLive(LA) 3029 City Game,SEERC 2004题解
- 【DP】 hdu1505 City Game
- hdu 1505 dp City Game
- uva 1330 - City Game(dp)
- HDU 1505 City Game (DP)
- hdu 1505 City Game(DP)
- hdu 1505 City Game(DP)
- android 媒体框架学习--mediaplayerservice 关系类图
- opencv2.4.9 绘制一维直方图
- IGBT最不为人知的神秘损坏原因!
- 五笔字典编码-------------->_<
- 【Redis手册一】常用命令
- LA -- 3029 City Game 【思维 + dp】
- hdu 6162 Ch’s gift(主席树)
- 安卓ProgressBar水平进度条的颜色设置
- vim 自动补全功能
- LTE功率控制
- Ionic开发问题汇总
- 【数位dp 求满足的值和】hihocoder 1033 交错和
- 软件功能测试后期如何提升自己?
- 文件存储