题意: 给出一个像这样的矩阵

R F F F F F

    F F F F F F

    R R R F F F

       F F F F F F

   F F F F F F

求F组成的最大子矩阵(面积最大) 有多组数据

  优秀的暴力???

  思路:枚举每个点 然后这个点可以往上延伸到最上的点 这两点为一根线 这根线左移移到最左可以到的地方 右边也是如此 然后算出面积

需要预处理出每个点往左延伸的最远点与往右延伸的最远点

code

 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #define M 1010
5 #define go(i,a,b) for(register int i=a;i<=b;i++)
6 #define goo(i,a,b) for(register int i=a;i>=b;i--)
7 #define mem(i) memset(i,0,sizeof(i));
8 using namespace std;
9 int read()
10 {
11 char c; c=getchar(); while(c!='F'&&c!='R') c=getchar();
12 if(c=='F') return 1; return 2;
13 }
14 int map[M][M],l[M][M],r[M][M],u[M][M];
15 int m,n,ans,t;
16 void init()
17 {
18 go(i,1,m) go(j,2,n)
19 if(map[i][j]==1&&map[i][j-1]==1) l[i][j]=l[i][j-1];
20 go(i,1,m) goo(j,n-1,1)
21 if(map[i][j]==1&&map[i][j+1]==1) r[i][j]=r[i][j+1];
22 }
23 int main()
24 {
25 scanf("%d%d",&m,&n);
26 go(i,1,m) go(j,1,n)
27 {
28 map[i][j]=read();
29 if(map[i][j]==1) u[i][j]=1;
30 l[i][j]=j;r[i][j]=j;
31 }
32
33 init();
34
35 go(i,1,m) go(j,1,n)
36 {
37 if(i>1&&map[i][j]==1&&map[i-1][j]==1)
38    {
39    l[i][j]=max(l[i][j],l[i-1][j]);
40    r[i][j]=min(r[i][j],r[i-1][j]);
41   u[i][j]=u[i-1][j]+1;
42    }
43 ans=max(ans,(r[i][j]-l[i][j]+1)*u[i][j]);
44 }
45
46 printf("%d\n",ans*3);
47 return 0;
48 }

HDU1505 City Game 悬线法的更多相关文章

  1. [POJ1964]City Game (悬线法)

    题意 其实就是BZOJ3039 不过没权限号(粗鄙之语) 同时也是洛谷4147 就是求最大子矩阵然后*3 思路 悬线法 有个博客讲的不错https://blog.csdn.net/u012288458 ...

  2. 【UVALive】3029 City Game(悬线法)

    题目 传送门:QWQ 分析 以前见到过差不多的这题. xhk说是单调栈水题,但我又不会单调栈,于是当时就放下了. 这么久过去了我还是不会用单调栈做这题,用的是悬线法. 非常好写 代码 #include ...

  3. City Game UVALive - 3029(悬线法求最大子矩阵)

    题意:多组数据(国外题好像都这样),每次n*m矩形,F表示空地,R表示障碍 求最大子矩阵(悬线法模板) 把每个格子向上延伸的空格看做一条悬线 以le[i][j],re[i][j],up[i][j]分别 ...

  4. 【BZOJ-1127】KUP 悬线法 + 贪心

    1127: [POI2008]KUP Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 317  Solved: 11 ...

  5. 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法

    3039: 玉蟾宫 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 753  Solved: 444[Submit][Status][Discuss] D ...

  6. BZOJ_3039_玉蟾宫_(动态规划+悬线法)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=3039 n*m的矩阵由R和F组成,求全是F的子矩阵的大小的三倍. 分析 悬线法: 浅谈用极大化思 ...

  7. BZOJ 1057: [ZJOI2007]棋盘制作( dp + 悬线法 )

    对于第一问, 简单的dp. f(i, j)表示以(i, j)为左上角的最大正方形, f(i, j) = min( f(i + 1, j), f(i, j + 1), f(i + 1, j + 1)) ...

  8. BZOJ 3039: 玉蟾宫( 悬线法 )

    最大子矩阵...悬线法..时间复杂度O(nm) 悬线法就是记录一个H向上延伸的最大长度(悬线), L, R向左向右延伸的最大长度, 然后通过递推来得到. ----------------------- ...

  9. [P1169] 棋盘制作 &悬线法学习笔记

    学习笔记 悬线法 最大子矩阵问题: 在一个给定的矩形中有一些障碍点,找出内部不包含障碍点的,边与整个矩形平行或重合的最大子矩形. 极大子矩型:无法再向外拓展的有效子矩形 最大子矩型:最大的一个有效子矩 ...

随机推荐

  1. ClientDataSet字段不能进行编辑时的解决方法

    ClientDataSet字段不能进行编辑时的解决方法: procedure ModifyClientDataSet(const YesOrNot: Boolean;  cs : TClientDat ...

  2. 打豪车应用:uber详细攻略(附100元优惠码)

    在嘀嘀打车和快的打车交战热闹的时候,美国的打车应用uber进入中国.与在美国以个人司机注册做 Uber 司机为主的模式不同,Uber 在中国采用与租车公司合作.由租车公司提供车辆和司机的模式,同时中文 ...

  3. [Offer收割]编程练习赛23-freeloop

    A. H国的身份证号码I dfs裸题. 时间复杂度\(O(n^k)\). #include <bits/stdc++.h> #define FOR(i,a,b) for (int i=a; ...

  4. Java 继承和多态

                                                        Java  继承和多态 Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因 ...

  5. 回车”(carriage return)和”换行”(line feed)的区别和来历-(附:ASCII表)

    这两天研究小票打印机编程手册,遇到这样一个问题:     LF,即Line Feed,中文意思“换行”:CR,即Carriage Return,中文意思“回车”.但是我们通常把这两个混为一谈.既然设置 ...

  6. std::string 赋值为nullptr引起程序崩溃

    一个错误排查两天,std::string赋初值时最好为"", 如果赋初值为nullptr,因为std::string不能和nullptr作比较,所以后面用的时候会引起崩溃. 佩服我 ...

  7. [BJOI2017]树的难题 点分治 线段树

    题面 [BJOI2017]树的难题 题解 考虑点分治. 对于每个点,将所有边按照颜色排序. 那么只需要考虑如何合并2条链. 有2种情况. 合并路径的接口处2条路径颜色不同 合并路径的接口处2条路径颜色 ...

  8. 模板:插头dp

    前言: 严格来讲有关dp的都不应该叫做模板,因为dp太活了,但是一是为了整理插头dp的知识,二是插头dp有良好的套路性,所以姑且还叫做模板吧. 这里先推荐一波CDQ的论文和这篇博客http://www ...

  9. Javascript/jQuery关于JSON或数组集合的几种循环方法

    JavaScript遍历JSON或数组集合: /** * 根据json数据生成option树形控件 * 如果有children节点则自动生成树形数据 * @param {JSON} data * @p ...

  10. 预读(读取文件前几行)文件(txt,dat,csv等)程序

    需求: txt.dat.csv文件很大,需要花很长的时间打开, 但实际上我们只需要查看文件的前几行,查看数据的内容和格式 exe & code :  https://github.com/co ...