BugsIntegrated,Inc.解题报告.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BugsIntegrated,Inc.解题报告.ppt

Bugs Integrated, Inc. 解题报告胡华嵩 一、算法设计 用动态规划的思想 所有的“方块”的坐标值都减1,则坐标满足 0≤x≤N-1 0≤y≤M-1 每个方块就用一个有序2元组表示 (x,y) x,y满足上面两个式子 定义1 设向量B=(b0,b1,…,bM-1),S(B)表示一个由方块组成的集合。严格的定义如下: S(B)={(x,y)|x≤by} 如果把B看成是一个边界的话,S(B)表示的就是边界B左边的所有部分,我们可以从下图看出: B=(1,5,0,-7,3),N=9,M=5,蓝色部分即为S(B) 定义 2 对于每个(x,y),我们定义一个以(x,y)为边界的集合,记为B(x,y)。严格的定义如下: S(B(x,y))=S(Bx,y) 其中Bx,y为定义1中的向量,且满足 b0=b1=…=by=x by+1=…=bM-1=x-1 S(B(4,2))=S((4,4,4,3,3)) 定义3 设P=(p0,p1,…,pM-1),其中0≤pi≤2。我们规定 S(B-P)=S((b0-p0,b1-p1,…,bM-1-pM-1)) 相当于是在S(B)的基础上,除去了每一行最右边的0(1,2)个方块。 后面我们也用S(B-P)表示在S(B-P)中能容纳的3x2矩形的最大数目。 S(B(4,2)-P),其中P=(0,2,1,0,2) 把P的第i个分量看成是3进制数 的第i位,则每个M维向量P与0 到3M-1中的一个数p一一对应。 我们计算每个x,y,p所对应的 S(B(x,y)-P)中所能包含的3x2矩 形的最多数目。 为了下面讨论方便,还需要几点说明: Ej表示一个定义3中的向量,其中只有第j个分量的值为1,剩下的全为0。与Ej相对应的数为3j。 “0”表示的也是一个定义3中的向量,其中所有的分量都为0。与0相对应的数就是0。在下面的分析中0和0不加区分(即都用“0”表示)。 对于任意的一个p,pj表示与p对应的向量P的第j个分量的值。 设p与P对应,A(x,y,p)的值为S(B(x,y)-P)中包含3x2矩形的最多数目。 给定x,y,p 有两种情况: pj0 和 pj=0 对于pj0的情况,我们以右边的两个图为例: 容易看出: A(x,y,p)=S(B(x,y)-P) =S(B(x,y-1)-(P-Ey)) =A(x,y-1,p-3y) 对于pj=0,又分三种情况: 1 以(x,y)为右下角不能放3x2矩形 2 以(x,y)为右下角能放一个横着的3x2矩形 3 以(x,y)为右下角能放一个竖着的3x2矩形 当然,2、3两种情况都需要x,y满足一定的条件 对于第一种情况,(x,y)显然是多余的,加上(x,y)与不加上(x,y)是等价的,即 A(x,y,p)=S(B(x,y)-P) =S(B(x,y-1)-P) =A(x,y-1,p) 第二种情况 很显然,要使第二种情况成立,p的值需要一定的条件,即 py-1=0 从右图可以得到下面的结论: A(x,y,p)=S(B(x,y)-P) =S(B(x,y-2)-(P+2x Ey-1+2xEy))+1 =A(x,y-2,p+2x3y-1 +2x3y)+1 第三种情况 同上,也需要p满足一定的条件: py-1=py-2=0 由右图可得下面的结论: A(x,y,p)=S(B(x,y)-P) =S(B(x,y-3)-(P+Ey+ Ey-1+Ey-2))+1 =A(x,y-3,p+3y-2+ 3y-1+3y)+1 在任何状态下,都先要考虑第一种情况,如果满足第二或第三种情况的条件,则应该取几种情况的最大值。 上面的讨论中,考虑的y是大于1的,对于y等于0和1,可得同样的结论。x=0的初始值全为0,所以只需考虑x0的情况。 由上面的讨论可知,我们只需要记录最后3个方块(x,y)的数据,就可以一步一步的推到最后,而A(N-1,M-1,0)就是我们所要求的答案。 算法的时间复杂度为O(MN3M) 二、优化 150x10x59049≈9x107 运算时间60s左右 对于每个(x,y),都要计算所有的p对应的P的第y个分量(还有y-1、y-2)的值,这里重复计算很多。我们可以事先计算好每个p的各个分量的值。这样处理以后,时间减少到了15s左右。 再通过一些细节的更改,最后时间能减少到8.5s。 三、进一步分析 从M,N,P三个数上着手 M最大为10,没什么好考虑的 N最大为150,N减少

文档评论(0)

maritime5 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档