- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[算法合集之从小H的小屋的解法谈算法的优化
从《小H的小屋》的解法谈算法的优化 安徽师范大学附属中学 杨弋 题目大意 小H有一个院子,东西方向长为100单位。东墙和西墙均平行于y轴,北墙和南墙分别是斜率为k1和k2的直线。北墙和南墙分别围有多块草坪,每块草坪都是一个矩形,矩形的每条边都平行于坐标轴。相邻两块草坪的接触点恰好在墙上,接触点的横坐标被称为它所在墙的“分点”,这些分点必须是1到99的整数。北墙要有m块草坪,南墙要有n块草坪,并约定,m≤n。如果记北墙和南墙的分点集合分别为X1,X2,则应满足X1 X2。 输入k1,k2,m,n。k1和k2为正实数,m和n为正整数,且2≤m≤n≤100。 假定南北墙距离很远,南墙草坪和北墙草坪不会重叠。 题目大意 让我们来看一个例子: 输入:0.5 0.2 2 4 算法一 看到题目,我们首先想到的算法是动态规划。 我们用f(w,u,v)表示长度为w,北墙u块草坪和南墙v块草坪时的最小面积。 令 一块北墙草坪和其对应的南墙草坪为一个“块”,若北墙草坪长度为x,南墙草坪块数为k,则该块最小面积为area(x,k)。 算法一 算法一 算法二 算法二 我们枚举x,当x增大的时候,ka不会减小。 这样,我们可以枚举x的同时计算ka 。 算法二 算法三 算法三 算法三 算法三 算法三 算法三 算法三 我们先把整个墙分成两部分,第一部分包含m1段北墙草坪,每段对应n1段南墙草坪;第二部分包含m2段北墙草坪,每段对应n2段南墙草坪。如果两部分的长度确定了,在两部分内,都可以直接贪心求该部分的最小面积 。 我们枚举其中一个部分的长度,另一个部分的总长度也就确定了 ,此时的最优解可以在O(1)时间内计算出来。 算法三 算法四 算法四 算法四 算法四 算法四 总结 总结 总结 * * 本资料由-大学生创业|创业|创业网/提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药| Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 图中给出的就是这组数据的最优解,最小面积为3000。 y x 西 东 南 北 0 25 50 75 100 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. f(w,u,v) =min{f(w-x,u-1,v-k)+area(x,k) } x 共k块 …… …… Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 这样,我们就得到了算法一: 1、枚举所有合法的w,u,v,对于每一组w,u,v,计算f(w,u,v) 。 2、在计算f(w,u,v)时,枚举所有合法的x,k,从而求出f(w,u,v) 。 3、 f(100,m,n)就是我们所要求的解。 该算法时间复杂度是O(l2mn2) 空间复杂度是O(ln) Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 看来,我们必须优化我们的算法…… Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 在状态转移时,假如我们已经确定了x…… k f(w,u,v) ka kka时曲线是下降的 kkb时曲线是上升的 kb Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile . Copyright 2004-2011 Aspose Pty Ltd. 由于x和ka都是递增的,该算法的时间复杂度降为O(l2mn),空间复杂度仍然是O
文档评论(0)