- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最大子图形问题详解
宋壬初
最大子图形问题包括最大子正方形、最大子矩形、最大子三角形、最大子菱形等。这些问题可以用动态规划来解决。通过最大子图形问题,我们充分掌握了动态规划的核心思想,即同一的子问题只算一次。同时培养了对于图形的敏锐的观察力。
子问题1:连续的1
给定一个01串,求其中最长的连续1子串的长度。
比如,对于串00101110110,最长连续1子串的长度是3。它由第5到7个字符组成。
怎么解决呢?我们用一个数组a[1..n]来记录这个01串,然后,我们用一个数组f[0..n]来记录子问题的结果。我们定义f[i]为以第i个字符结尾的连续1子串的长度。假设我们已经求出了f[i-1]。那么,如果a[i]=1,f[i]=f[i-1]+1,否则f[i]=0。初始的f[0]=0。最后,我们扫描f数组,找到最大的值就是答案。
扩展:假如我们给出的是一个01矩阵,那么我们的a数组将变成2维,而其转移方式是没有变化的。不过,这次我们不仅考虑横向的连续1,还考虑纵向的。所以需要两个数组:row[0..n,0..n]和col[0..n.0..n]。那么,转移方式如下:
row[i,j-1]+1 (a[i,j]=1)
row[i,j]=
0 (a[i,j]=0)
col[i-1,j]+1 (a[i,j]=1)
col[i,j]=
(a[i,j]=0)
上面的连续的1是同行或同列的。那么,你能想到对角线方向连续的1的长度怎么求么?
子问题2:最大子正方形
给定一个01矩阵,求其中最大的一个子正方形,要求这个正方形全部由0组成。
首先,我们用上面的方法,求出每个点向左扩展的连续0的长度,向上扩展的连续0的长度。不妨依然用row和col两个数组表示。
通过观察,我们找出图形之间的继承关系。如果以(i-1,j-1)点为右下角的最大子正方形的边长是dp[i-1,j-1],那么以(i,j)为右下角的最大子正方形的边长不会超过dp[i-1,j-1]+1。此外,它还受到row[i,j]和col[i,j]的限制,不会超过这两个数。由于正方形的图形性质,以上三个限制条件是显然的。
dp[i-1,j-1]+1
dp[i,j]= min row[i,j]
col[i,j]
经典题目:USACO 5.3.4 Big Barn
子问题3:最大子1*2矩形
给定一个01矩阵,求其中最大的1*2长方形,要求这个长方形只能包括0。求长方形的尺寸(我们规定高为其尺寸)。
首先,我们用上面的方法,求出row数组和col数组。我们用dp[i,j]表示以(i,j)为左下角的最大子1*2矩形的高。那么,我们发现,其继承关系为:
dp[i-1,j-2]+1
dp[i,j]= min row[i,j] div 2
col[i,j-1]
col[i,j]
经典题目:刘思壮18岁生日模拟赛 雪地留名
子问题4:最大子p*q矩形(p,q互质)
给定一个01矩阵,求其中最大的p*q长方形,要求这个长方形只能包括0。求长方形的尺寸(我们规定高除以p为其尺寸)。
类似上面的转移。但是,这次我们需要更多的继承关系,具体为:
dp[i-p,j-q]+1
row[i-p+1,j] div q
row[i-p+2,j] div q
dp[i,j]= min ………………
row[i,j] div q
col[i,j-q+1] div p
col[i,j-q+2] div p
………………
col[i,j] div p
子问题5:最面积大子矩形
*这个很重要!
给定一个01矩阵,求其中面积最大的全零矩形的面积。
这个问题有两种解法,请参见NOI2003集训队员王知昆冬令营论文《浅谈用极大化思想解决最大子矩形问题》
悬线法解决最大子矩形问题是一个很难的问题,大家一定要掌握。
经典题目:USACO 6.1.2 Rectbarn
Vijos1255 月饼盒
子问题6:最大子三角形
给定一个01矩阵,找出其中最大的全零等腰直角三角形。由于三角形的形状可能不同,我们一一讲解。
为了简便,我们用从当前点经过直角顶点到另一个45度角点的路径来定义三角形形状。
6.1 上——左 三角形
我们用col[i,j]表示从当前点向上连续1的个数,dp[i,j]表示以(i,j)dp[i-1,j-1]+1
dp[i,j]=min
col[i,j]
6.2 上—
您可能关注的文档
最近下载
- 中国飞机座舱透明件行业市场占有率及投资前景预测分析报告.pdf VIP
- 静脉用药安全输注药护专家指引.pptx VIP
- 十年(2015-2024)高考英语语法填空真题与模考试卷汇编16-定语从句a原卷版(含答案).pdf VIP
- AQ 2061-2018 金属非金属地下矿山防治水安全技术规范.docx VIP
- (新)预防艾梅乙母婴传播试卷.docx VIP
- 香丽高速公路第八标段弃土场.docx VIP
- CT扫描技术模拟试题及答案、南方医科大学2006级医学影像技术学试卷.pdf VIP
- 运动生理学(全集)PPT(精品PPT).pptx VIP
- 人工智能基础与应用课件.pptx VIP
- GB 14976-2002 流体输送用不锈钢无缝钢管.pdf VIP
文档评论(0)