算法合集之《从《小H的小屋》的解法谈算法的优化》

合集下载

5.《算法设计与分析》试题库

5.《算法设计与分析》试题库

《算法分析与设计》试题库(一)一、选择题1.应用Johnson 法则的流水作业调度采用的算法是(D )A. 贪心算法B. 分支限界法C.分治法D. 动态规划算法2.Hanoi 塔问题如下图所示。

现要求将塔座A 上的的所有圆盘移到塔座B 上,并仍按同样顺序叠置。

移动圆盘时遵守Hanoi 塔问题的移动规则。

由此设计出解Hanoi 塔问题的递归算法正确的为:(B )Hanoi 塔A. void hanoi(int n, int A, int C, int B) {if (n > 0) {hanoi(n-1,A,C, B); move(n,a,b);hanoi(n-1, C, B, A); } B. void hanoi(int n, int A, int B, int C) {if (n > 0) {hanoi(n-1, A, C, B); move(n,a,b);hanoi(n-1, C, B, A); }C. void hanoi(int n, int C, int B, int A){if (n > 0){hanoi(n-1, A, C, B);move(n,a,b);hanoi(n-1, C, B, A);}D. void hanoi(int n, int C, int A, int B){if (n > 0){hanoi(n-1, A, C, B);move(n,a,b);hanoi(n-1, C, B, A);}3.动态规划算法的基本要素为(C)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用4. 算法分析中,记号O表示(B),记号Ω表示(A),记号Θ表示(D)。

A.渐进下界B.渐进上界C.非紧上界D.紧渐进界E.非紧下界5. 以下关于渐进记号的性质是正确的有:(A)A.f(n)(g(n)),g(n)(h(n))f(n)(h(n))=Θ=Θ⇒=ΘB. f(n)O(g(n)),g(n)O(h(n))h(n)O(f(n))==⇒=C. O(f(n))+O(g(n)) = O(min{f(n),g(n)})D. f(n)O(g(n))g(n)O(f(n))=⇔=6. 能采用贪心算法求最优解的问题,一般具有的重要性质为:(A)A. 最优子结构性质与贪心选择性质B.重叠子问题性质与贪心选择性质C.最优子结构性质与重叠子问题性质D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》

算法合集之《组合游戏略述——浅谈SG游戏的若干拓展及变形》

1 2
《由感性认识到理性认识——透析一类搏弈游戏的解答过程 》 ,张一飞,国家集训队 2002 论文 《解析一类组合游戏》 ,.王晓珂,国家集训队 2007 论文 第 1 页 共 24 页
IOI2009 中国国家集训队论文
贾志豪 石家庄二中

每一个模型都有详细的证明。大多数人在学习信息学时存在的问题是 “知其然,不知其所以然” ,因为大多数的比赛模式是只要求结果而不 要求过程。但这会使我们对一个事物“只知表皮,不知深髓” ,如果将 一个我们知道的问题稍加变形的话,我们可能就不会了。这个问题在组 合游戏中体现得尤其突出。因此笔者对于文中的每一个定理都给出了证 明,希望读者对文中的思想“知其然,知其所以然” 。
1.4 定义 NIM-模型
为了不使读者对本篇论文失去兴趣,我特意将介绍取石子游戏的内 容换成小字,对这部分内容已经很熟悉的读者可以直接略过。
取石子游戏即著名的 nim 游戏,游戏规则如下: 桌子上有 N 堆石子,游戏者轮流取石子。 每次只能从一堆中取出任意数目的石子,但不能不取。 取走最后一个石子者胜。
IOI2009 中国国家集训队论文
贾志豪 石家庄二中
组合游戏略述 ——浅谈 SG 游戏的若干拓展及变形
石家庄二中 贾志豪
前言
组合游戏是近几年新兴起的博弈游戏, 随着张一飞学长关于组合游戏的论文 的面世, 组合游戏问题开始在国内信息学竞赛这片沃土上生根发芽,与大家一起 成长、成熟、成才。最为马上要离开高中信息学舞台的高三学生,我一直希望能 为学弟学妹们留下一些我自己的心得,于是这篇论文应运而生! ! ! 这篇论文的一些思想是我早在一年前节开始构思的, 感谢计算机学会为我提 供这样一个舞台, 能让我的论文为更多的人所知道;同时感谢在我写论文时无私 帮助过我的所有人,谢谢你们! ! ! 先介绍一下论文的主要内容:第一章作为论文的理论基础,主要从欣赏的角 度引入了 SG 函数、游戏图、NIM 游戏等概念,重点谈我对组合游戏尤其是 SG 函 数的体会、 理解; 第二章主要介绍了几种不同规则的组合游戏以及相应的应对策 略,旨在告诉读者,游戏规则变化之后,我们应该如何去分析新的规则、解决新 的模型;第三章主要介绍了几种竞赛中常见的组合模型,并将“她”们成功的转 化成了 NIM 模型。 鉴于这篇论文的内容较多, 在这里给读者提供一些阅读建议:第一章由于篇 幅原因,并没有给出 SG 函数、NIM 游戏解法的详细证明过程,对于刚刚接触组 合游戏的读者,建议先阅读一些关于 SG 函数的资料(张一飞关于博弈游戏的论 文1、王晓柯关于组合游戏的论文2就很不错) ,然后再从论文的第一章看起,相信 你一定会很有收获;第二、三章是论文的重头戏,如题目所言,分别谈 SG 游戏 的拓展和变形,对于钟情于组合游戏的读者,可以重点看一看第三章,相信一定 不会让你失望! ! ! 这篇论文主要有两个特点: 基本没有例题但处处是例子。为了让读者更好的理解论文中的思想,笔 者在选题目的时候刻意将题目的背景剥掉,只剩下一个“光溜溜 ”的数 学模型,这样读者在阅读论文时,就不必花精力去考虑背景向模型的转 化,可以全身心去理解笔者想要传达的思想。但读者不必去担心没有地 方练习,笔者将这几年的自己做过的组合游戏题收录在了论文的附录 里。

算法设计与分析考试题及答案-算法设计与优化答案

算法设计与分析考试题及答案-算法设计与优化答案

1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

2.算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。

3.某一问题可用动态规划算法求解的显著特征是____________________________________。

4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X 和Y的一个最长公共子序列_____________________________。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。

6.动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。

7.以深度优先方式系统搜索问题解的算法称为_____________。

8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________。

9.动态规划算法的两个基本要素是___________和___________。

10.二分搜索算法是利用_______________实现的算法。

二、综合题(50分)1.写出设计动态规划算法的主要步骤。

2.流水作业调度问题的johnson算法的思想。

3.若n=4,在机器M1和M2上加工作业i所需的时间分别为a i和b i,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。

4.使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。

浅谈常见排序算法实现原理及性能优化

浅谈常见排序算法实现原理及性能优化

浅谈常见排序算法实现原理及性能优化
张子瀚
【期刊名称】《中国校外教育(理论)》
【年(卷),期】2018(000)002
【摘要】随着计算机技术的快速发展,企业和用户对软件的要求不再是仅仅停留在满足基本需求.在此基础之上,企业和用户希望软件能够具有更好地健壮性和更高的性能.目前,计算机程序语言不断更新换代,程序员在编写代码时,透明度越来越高,可能表面上,但是却不了解底层的实现.通过使用Java编程语言,研究基础的几个排序算法的实现原理,并且讨论如何提高排序算法的性能.
【总页数】2页(P91-92)
【作者】张子瀚
【作者单位】河南省郑州市第十一中学
【正文语种】中文
【相关文献】
1.选择排序算法常见问题分析
2.几种常见排序算法思想及比较分析
3.基于JAVA语言的常见排序算法分析与比较
4.常见排序算法及其主要应用
5.常见排序算法及其主要应用
因版权原因,仅展示原文概要,查看原文内容请购买。

算法合集之《浅谈信息学竞赛中的线性规划——简洁高效的单纯形法实现与应用》

算法合集之《浅谈信息学竞赛中的线性规划——简洁高效的单纯形法实现与应用》

算法合集之《浅谈信息学竞赛中的线性规划——简洁高效的单纯形法实现与应用》线性规划的简单应用和实现浙江省杭州二中李宇骞摘要线性规划在实际生活中应用非常广泛,已经创造了无数的财富。

但是它在竞赛中的应用很少。

然而,我相信它的潜力很大,所以在这里向大家简单地介绍了线性规划的一些应用,以及如何实现解线性规划,以抛砖引玉,希望线性规划能够在竞赛中如同网络流一样熠熠生辉。

本文主要分三部分,第一部分简单地介绍了线性规划,给出了其定义;第二部分给出了一些简单的应用,以及一个线性规划的经典应用——多物网络流;第三部分是用单纯形(Simplex)算法实现解线性规划。

由于对大多数竞赛选手而言,写一个线性规划的程序比构造一个模型更为恐怖(虽然难度可能不及),并且单纯形法不是多项式级别的,不实践很难知道它的速度到底怎么样,所以本文着重于第三部分,较详细地描述了一些实现的细节,以及简单的证明,并且对单纯形法的运行速度做了一些实验,还与专业的数学软件MATLAB和LINDO做了对比,从一定程度上说明了单纯形法的速度是卓越的。

同时,200行左右的程序可以让大家不必那么担心编程的复杂度,某些情况下,100行左右的程序就足够了。

关键字线性规划(Linear programming)单纯形法(Simplex)多物网络流(Multicommodity flow)引言“随著强有力的算法的发展与应用,线性规划能解决的问题也越来越来多。

在历史上,没有哪种数学方法可以像线性规划那样,直接为人类创造如此巨额的财富,并对历史的进程发生如此直接的影响。

”孙捷,这位曾经执教于清华大学的美国华盛顿大学博士如此评价线性规划。

他还举了这样一个实例:在波斯湾战争期间,美国军方利用线性规划,有效地解决了部队给养和武器调运问题,对促进战争的胜利,起了关键的作用。

难怪人们说,因为使用炸药,第一次世界大战可说是「化学的战争」;因为使用原子弹,第二次世界大战可说是「物理的战争」;因为使用线性规划,波斯湾战争可称为「数学的战争」。

优化算法的常用技巧与思路分享

优化算法的常用技巧与思路分享

优化算法的常用技巧与思路分享优化算法是指对算法进行改进,使其执行效率更高、内存占用更少,或者解决问题的精确度更高等方面。

以下是一些常用的优化算法的技巧和思路:1.时间复杂度分析:首先要对算法的时间复杂度进行分析,找出算法中时间复杂度较高的部分。

在优化算法时,通常要先关注时间复杂度较高的部分,因为这部分对整体程序的性能影响最大。

2.算法改进:有时候可以通过改进算法的思路来优化算法。

比如,可以通过使用动态规划、回溯、剪枝等技巧来减少计算量或者排除无效部分,从而提高算法的运行效率。

3.数据结构选择:选择合适的数据结构可以大大减少程序的时间和空间复杂度。

比如,使用哈希表来替代列表可以大幅提高查找的速度;使用堆来替代普通数组可以加速排序等。

4.空间换时间:有时候可以通过牺牲一些额外的空间来提高算法的运行效率。

比如,可以使用缓存来存储一些计算结果,避免重复计算;可以使用辅助数组来快速查找,等等。

5.并行处理:对于一些密集型的计算任务,可以考虑使用并行处理来提高计算速度。

比如,可以使用多线程、多进程或者GPU加速来同时处理多个计算任务,提高计算效率。

6.优化循环:通常循环是程序中最常执行的部分,因此优化循环对程序的性能有着重要影响。

可以通过减少循环的次数、减少循环内部的计算量、合并循环等方式来优化循环。

7.缓存命中率优化:在程序中频繁访问的数据可以存储在高速缓存中,以减少访问内存和IO的时间。

通过合理地设计数据结构和算法,可以提高缓存的命中率,从而加速程序的执行。

8. IO优化:对于涉及到大量IO操作的程序,可以考虑使用缓冲等技术来减少IO的次数,从而提高程序的执行效率。

9.算法并行化:对于一些可以并行计算的问题,可以考虑使用并行算法来提高计算速度。

比如,可以使用并行矩阵乘法来加速矩阵计算;可以使用并行图搜索来加速图算法等。

10.异步计算:对于一些非线性计算任务,可以考虑使用异步计算来提高计算效率。

通过将计算任务分解为独立的子任务,并使用多线程或者异步IO来执行这些子任务,可以实现计算的并发执行,从而提高计算速度。

算法合集之《欧几里得算法的应用》

算法合集之《欧几里得算法的应用》

5 总结
14
∗mailto:crazyb0y@
1
1 欧几里得算法
这一节主要是简要介绍一些关于欧几里得算法的基础,如果您对其足够了解,请直接跳过
1.1 最大公约数
最大公约数问题是最早被研究的算法问题之一了1,并且是信息学竞赛中能涉及到的很 多数论内容,比如模线性方程,模线性方程组的基础。欧几里得算法 (Euclidean algorithm2) ,即大部分选手所知的“辗转相除法”,其核心在于不断将两数规模变小,最后实 现对数时间3内把问题变换到能直接判定解的规模。
5: for i = 1 → n do
6: for j = i + 1 → n do
7:
while Aj,i ̸= 0 do
8:
t ⇐ Ai,i div Aj,i
9:
Ai ⇐ Ai − Aj × t
10:
swap Ai and Aj
11:
ans ⇐ −ans
12: end while
13: end for
(1)
x4 − 4x3 + 4x2 − 3x + 14
(2)
x3
+
2 x2
+
5 x

2
(3)
3 33
x2 + x + 2
(4)
0
(5)
即可得到1与2的最大公因式为4。 多项式的最大公因式代表了两个多项式方程的公共根。
2.2 模意义下的矩阵行列式
题目来源 经典问题,一个例题是SPOJ Find The Determinant III89
乍看似乎欧几里得算法毫无神奇之处,但是当你发现了其逐步缩小规模的本质之后, 这种思想往往在做某些题目(包括数学计算机. . . )会给你带来耳目一心的感觉。

分房间问题的解题思路

分房间问题的解题思路

分房间问题的解题思路引言分房间问题是一个在日常生活中经常遇到的问题,尤其是在有限的房间资源下,合理地分配房间是必不可少的。

本文将通过不同的角度和方法,深入探讨分房间问题的解题思路。

分房间问题的背景在许多场景中,如学生宿舍、旅馆、养老院等,需要将一定数量的人员分配到有限数量的房间中。

分房间问题的目标是找到一种合理的分配方式,使得每个人都有一个房间,并且不浪费任何空房间。

解题思路一:贪心算法贪心算法是一种常用的解决优化问题的算法,它通过每一步选择中的局部最优解,最终得到全局最优解。

在分房间问题中,可以按照以下步骤进行:1.将所有房间按照容量从小到大排序。

2.将所有人员按照人数从多到少排序。

3.依次将每个人员分配到容量最小的房间中。

4.如果有多个房间容量一样小的,则选择剩余容量最大的房间。

这种方法的优点是简单易实现,但不一定能得到最优解。

因为贪心算法只考虑了当前的最优选择,没有考虑到未来可能出现的更好的选择。

解题思路二:动态规划动态规划是一种利用已求解的子问题来求解更大规模问题的方法。

在分房间问题中,可以使用动态规划的思路来解决。

1.创建一个二维数组dp,其中dp[i][j]表示前i个人员分配到前j个房间的最优解。

2.初始化第一行和第一列的值为0,表示没有人员或没有房间时的最优解为0。

3.对于每个dp[i][j],可以考虑两种情况:–不将第i个人员分配到第j个房间,此时dp[i][j] = dp[i][j-1]。

–将第i个人员分配到第j个房间,此时dp[i][j] = dp[i-1][j-1] + 1。

4.选择以上两种情况中的最大值作为dp[i][j]的值。

5.最终的最优解为dp[N][M],其中N为人员数量,M为房间数量。

动态规划的优点是能够得到最优解,但需要额外的存储空间和计算时间。

解题思路三:网络流问题将分房间问题建模为网络流问题,可以通过最大流算法求解。

以下是解题步骤:1.创建一个源点s和一个汇点t。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时间(秒)
0.00005 0.00004 0.00003 0.00002 0.00001 00
总结
我们在解决本题的时候,首先想到 的算法是动态规划,通常解决这类试题 的方法也就是动态规划。并且,我们通 过优化状态转移使动态规划的性能得到 了极大的提升。 然而,动态规划是一个适用面很广 的算法,在本题中,它就并不是最优秀 的算法了。因为本题的一个很重要的思 想“均分”在动态规划中并没有得到很 好的体现。
……
…… f(w,u,v) =min{f(w-x,u-1,v-k)+area(x,k) }
共k块
算法一
这样,我们就得到了算法一:
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(l-n) 的,空间复杂度是O(1)的。
算法四
我们的优化还没有结束! 现在让我们来看看算法四吧
我们设分给第一部分的东西向长度为i 。设能使S 取到最优解的最小i为i1,能使S取到最优解的最大i 为i2。
和我们在思考算法二时的情况类似,我们发现i<i1时S随i增 大而减小,i>i2时S随i增大而增大,在i1≤i≤i2时S始终能取 到最小值。
算法四
就像这样
S
i<i1时曲线是 下降的
i<i2时曲线 是上升的
i
i1 i2
算法四
所以,我们只需要找到一个i0 ,使得i取i0-1和i0+1时总 面积都不会变少,那么此时总面积就是要求的最小值。
但是,这个优化并不能使 整个程序的速度有很大的 提升。
算法四
我们现在去掉“草坪长度是整数”这一限制,然后再来思 考本题。
总结
由此我们看出,我们在解题过程中应该:
抓住题目的特点 大胆猜想和尝试 敢于突破常规
本资料由-大学生创业|创业|创业网/提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|
题目大意
小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。 假定南北墙距离很远,南墙草坪和北墙草坪不 会重叠。
k1 k2 k1 k2 p= + 我们令 q = + m2 m2 n2 , m1 m1 n1
我们不难得出,i 取
ql p +q
时总面积最小
现在,我们再回到原问题中
最优解的i一定是接近
ql p +q
的。我们不妨先令i=
ql p +q

然后再不断地加1或减1以使解更优,直到求出最优解
算法四
由于S和i满足前面给出的那个关系,因此算法四是正确的。 虽然算法四的时间复杂度不好分析,但经过测试,我们发 现算法四要比算法三快很多!
总结
而贪心算法却能很好地体现均分的思想。因 此,最终我们大胆地放弃了动态规划算法而使用 贪心算法来获得更高的效率,而这种突破常规的 做法最终给我们带来了速度上极大的提高。 我们在优化贪心算法的时候,再一次抓住了 题目的特点,找出了S和i的关系,并由此找出一 个方法,能快速地找出一个接近最优解的方案。 在不断的优化中,我们最终将O(l2mn2)的时间 复杂度降至O(l-n)以下,空间复杂度也降至O(1)。
北墙草坪 南墙草坪
显然,这时尽量平均分配得到的就是最优解了
算法三
现在我们假设最优解有这样的情况
北墙草坪对应的南墙草坪块数的差距大于1了。
算法三
那么……
总存在这样的调整,调整以后差距会小于等 于1,并且总面积不会比原来大。
我们可以把南墙草坪按块数尽可 能平均地分配给北墙草坪!
算法三
这里是一个例子
S=8750
算法三
这样的贪心算法是错误的!
但是…… k1=k2=1,m=2,n=3 北墙草坪 南墙草坪 25 28 50 57 2529 100Hil 50 43 50 43
S=8572
算法三
为什么说这个贪心算法是错误的?
因为每一块北墙草坪对应的南墙草坪数量并不是相等的!
如果我们能使每一块北墙草坪 对应的南墙草坪数量相等……
该算法时间复杂度是O(l2mn2) 空间复杂度是O(ln)
算法一
看来,我们必须优化我们的算法……
算法二
在状态转移时,假如我们已经确定了x……
f(w,u,v)
k<ka时曲线是 下降的
k>kb时曲线 是上升的
k
ka kb
算法二
♦ 我们枚举x,当x增大的时候,ka不会减小。 ♦ 这样,我们可以枚举x的同时计算ka 。
题目大意
让我们来看一个例子: 输入:0.5 0.2 2 4
y
西 南 北 东
图中给出的 就是这组数 据的最优解, 最小面积为 3000。
x
0 25 50 75 100
算法一
♦ 看到题目,我们首先想到
x
的算法是动态规划。 ♦ 我们用f(w,u,v)表示长度为 w,北墙u块草坪和南墙v 块草坪时的最小面积。 ♦ 令 一块北墙草坪和其对应 的南墙草坪为一个“块”, 若北墙草坪长度为x,南 墙草坪块数为k,则该块 最小面积为area(x,k)。
算法二无论在时间复杂度上还是在 空间复杂度上都足够应付这道题目 的所有数据了。 那么,究竟有没有更好的方 法呢?
算法三
现在让我们彻底抛弃动态规划的思想,来试 一试贪心算法在此题中的应用。
我们尽可能平均地分配北墙草坪的长度 然后再尽可能平均地为南墙草坪分配长度 k1=k2=1,m=2,n=3 北墙草坪 南墙草坪 25 50 25 100Hil 50 50
本资料由-大学生创业|创业|创业网/提供资料 在线代理|网页代理|代理网页| | | | 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|
从《小H的小屋》的解法谈算法的优化
安徽师范大学附属中学
杨弋
本资料由-大学生创业|创业|创业网/提供资料 在线代理|网页代理|代理网页| 减肥药排行榜|淘宝最好的减肥药|什么减肥药效果最好|减肥瘦身药|
由于x和ka都是递增的,该算法 2mn), 的时间复杂度降为O(l 空间复杂度仍然是O(ln)。
算法二
我们注意到计算f(w,u,v)的最优 解 所 用 的 x,k 必 不 小 于 计 算 f(w,u+1,v) 的 最 优 解 所 用 的 x,k (假如f(w,u+1,v)存在的话), 所以我们可以记录计算最优解 时用的x,k,从而进一步减少程 序运行所用时间。
我们有3块北 墙草坪和10块 南墙草坪,该 怎么分配呢?
算法三
于是,我们得到了一个全新的算法:
♦ 我们先把整个墙分成两部分,第一部分包含m1
段北墙草坪,每段对应n1段南墙草坪;第二部分 包含m2段北墙草坪,每段对应n2段南墙草坪。如 果两部分的长度确定了,在两部分内,都可以直 接贪心求该部分的最小面积 。 ♦ 我们枚举其中一个部分的长度,另一个部分的总 长度也就确定了 ,此时的最优解可以在O(1)时 间内计算出来。
相关文档
最新文档