洛谷 P4147 玉蟾宫 P1169 [ZJOI2007]棋盘制作(求最大子矩阵)
题目: P4147 玉蟾宫: https://www.luogu.org/problemnew/show/P4147
P1169 [ZJOI2007]棋盘制作: https://www.luogu.org/problemnew/show/P1169
题目本质为求解矩阵中的最大子矩阵。
方法为:悬线法(具体参考: https://blog.csdn.net/Clove_unique/article/details/50512624 等相关文章)
建议手画一遍帮助理解。
P4147 玉蟾宫 的AC代码:
1 // 2 #include <bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 #define ri register ll 6 7 ll n,m,end; 8 bool a[1005][1005]; 9 ll L[1005][1005],R[1005][1005],H[1005][1005]; 10 ll l[1005][1005],r[1005][1005]; 11 char s; 12 13 signed main() 14 { 15 ios::sync_with_stdio(0),cin.tie(0); 16 cin>>n>>m; 17 for(ri i=1;i<=n;i++) 18 { 19 for(ri j=1;j<=m;j++) 20 { 21 cin>>s; 22 if(s=='F') 23 { 24 a[i][j]=1; 25 } 26 } 27 } 28 for(ri i=0;i<=n;i++) 29 { 30 ri t=0; 31 for(ri j=1;j<=m;j++) 32 { 33 if(a[i][j]) l[i][j]=t; 34 else L[i][j]=0,t=j; 35 } 36 t=m+1; 37 for(ri j=m;j>=1;j--) 38 { 39 if(a[i][j]) r[i][j]=t; 40 else R[i][j]=m+1,t=j; 41 } 42 } 43 for(ri i=1;i<=n;i++) 44 { 45 for(ri j=1;j<=m;j++) 46 { 47 if(a[i][j]) 48 { 49 H[i][j]=H[i-1][j]+1; 50 L[i][j]=max(L[i-1][j],l[i][j]+1); 51 R[i][j]=min(R[i-1][j],r[i][j]-1); 52 end=max(end,(R[i][j]-L[i][j]+1)*H[i][j]); 53 } 54 } 55 } 56 cout<<end*3<<'\n'; 57 return 0; 58 } 59 //
注意事项:
28行最外层循环一定从0开始,因为处理第1行要用到第0行的数据。
34,40行一定要将L和R的值赋在两边,原因手动模拟一遍即可知。
50,51行调用l与r一定要将l+1,r-1。
另外:
在 P1169 [ZJOI2007]棋盘制作 中:
首先是对于图上所有的棋盘一定属于以下两种类型:
1.黑格行列奇偶性相同,白格不同。
2.白格行列奇偶性相同,黑格不同。
那么在输入的时候属于第一种情况的赋1,属于第二种情况的赋0。
统计最大的1或0矩形和正方形就可以啦。
转载于:https://www.cnblogs.com/leprechaun-kdl/p/11015999.html
洛谷 P4147 玉蟾宫 P1169 [ZJOI2007]棋盘制作(求最大子矩阵)相关推荐
- 洛谷P4147 玉蟾宫(单调栈解决)
题目 题目链接 题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N\times ...
- 洛谷 P4147 玉蟾宫【悬线法/单调栈】
题目背景 有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成 N×MN\times MN×M ...
- 刷题记录:洛谷P4147玉蟾宫
传送门:洛谷 题目描述: 这片土地被分成 N × M N\times M N×M 个格子,每个格子里写着 'R' 或者 'F',R 代表这块土地被赐予了 rainbow,F 代表这块土地被赐予了 fr ...
- 洛谷 P4147 玉蟾宫
这好像是一道悬线法的题目,但是我不会,只能用单调栈水过了 我们将ai,ja_{i,j}ai,j定义为从(i,j)(i,j)(i,j)出发向上(坐标减小)可以达到的最长的.没有R的路径 比如说样例 5 ...
- 洛谷 P4147 玉蟾宫 题解【悬线dp】
原题地址 蛤,今天正好学习一下悬线dp,写了个板子题. 用 l [ i ] [ j ] l[i][j] l[i][j]表示能延伸的最左的位置的列, r [ i ] [ j ] r[i][j] r[i] ...
- 洛谷 P1169 [ZJOI2007]棋盘制作
题目链接 P1169 [ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8×8大小的黑白相 ...
- 洛谷4147 玉蟾宫
题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...
- 洛谷P4147玉某宫(最大矩阵好题)
题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F',R代表这块土地被赐予了rainbow,F代表这块土地被赐予了freda. 现在freda要在这里卖萌...它要找一块矩形土地,要求 ...
- P1169 [ZJOI2007]棋盘制作(悬线法)
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8 \times 88×8大小的黑白相间的方阵,对应八八六十四卦,黑白 ...
最新文章
- R语言ggplot2可视化:通过水平半小提琴图(Horizontal Half Violin Plots)和抖动数据点( jittered data)可视化雨云图(Rain Cloud plots)
- Oracle OEM 配置报错: No value was set for the parameter DBCONTROL_HTTP_PORT 解决方法
- 在linux下给grep命令添加颜色
- hdu4004 The Frog's Games 二分
- JS----JavaScript中函数
- 辉光UIView的category
- JVM选项:-client vs -server
- 【codevs2497】 Acting Cute
- 超文本引用href的几种用法
- python的输出函数_Python
- java游戏应龙女魃转世_应龙和女魃的凄美爱情,究竟是爱情,还是阴谋?
- 运算、函数、数组的了解
- checksum命令 linux,Windows相当于linux cksum命令
- python初学者编程指南源码_适合新手的开源项目(Python 篇)
- C#中用WinAPI调用外部程序
- gx works2产品id_gx works2中文版下载|
- 中文输入纠错任务整理
- Jack Lin tools 3Dmax批渲染插件
- 基于51单片机的16键电子琴音乐盒仿真原理图方案设计
- 【Unity使用UGUI实现王者荣耀UI界面(四)】游戏开始界面