
分治
文章平均质量分 91
算法,分治专题
来老铁干了这碗代码
算法爱好者 终生学习践行者 雨雪刀霜阻不住 不成大神誓不休
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【测试点分析】1010 Radix (25 分)_37行代码AC
立志用最少的代码做最高效的表达PAT甲级最优题解——>传送门Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal number and 110 is a binary number.Now for any pair of positive integers N1 and N2, y原创 2021-02-09 17:17:55 · 1965 阅读 · 4 评论 -
【最详细】BFPRT算法:时间复杂度O(n)求第k小的数字
去年写了一篇对快排进行改进的算法,可以在时间复杂度 O(n)O(n)O(n)的情况下,找到第kkk小的数字。那时候,我还不知道这个算法叫BFPRT算法——现在知道了,还知道它又被称为中位数的中位数算法,它的最坏时间复杂度为O(n)O(n)O(n) ,它是由Blum、Floyd、Pratt、Rivest、Tarjan提出,它的思想是修改快速选择算法的主元选取方法,提高算法在最坏情况下的时间复杂度。1 STL std::nth_element而且,我还发现了STL中有一个类似的函数——std::nth_e转载 2020-12-06 16:49:06 · 1402 阅读 · 0 评论 -
25行代码AC_蓝桥杯 2017A组省赛第九题 分巧克力(暴力优化)
励志用少的代码做高效表达题目描述 儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。 为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:1. 形状是正方形,边长是整数2. 大小相同例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当然小朋友们都希望得到的巧克力尽可能大,你能帮小Hi计算出最大的边长是多少么?输入第一行原创 2020-10-12 11:04:29 · 821 阅读 · 0 评论 -
代码分析+原理图解——棋盘覆盖问题-分治法
什么是棋盘覆盖方法?首先给出一个包含一个奇异点的16*16棋盘:第一步是将该棋盘分为四个等大的子棋盘:然后将该棋盘看做是4*4的棋盘,可以看到奇异点在左上角的子棋盘中,那么这一步的任务就是用一个(真的是一个)L型的棋子(下图中红色的格子)将其他三个子棋盘构造成含奇异点的子棋盘:下一步是将红线分割的子棋盘又切割成四个子棋盘(白色线切开的子棋盘):然后对每个红色线包围在里面的子棋盘,用一个L型棋子(黄色)又构造出奇异点,使得每个子棋盘都有一个奇异点,即白色线围起来的格子看做是一个整体,里面包原创 2020-09-25 19:07:26 · 5673 阅读 · 1 评论 -
四种解法——求子序列的最大连续子序和(普通解法、求和解法、分治法、O(n)级解法)(面试经典题)
励志用少的代码做高效表达在这四种解法里,解法一是通法,可以学到规律和知识,做基础之用;解法二在解法一的基础上做改进,锻炼思维;解法三则是大名鼎鼎的分治法,涉及到递归的知识,算是“高效算法设计”的基础;解法四以O(n)的复杂度解出最大连续子序和,一个字,神奇。四种解法循序渐进,效率逐步提高,精妙至极。建议初学者每种都要掌握。解法一:最普通的解法,定义i循环,代表数组从0到n-1的值,定义j循环,代表从a[i]开始,到a[j]结束。 定义k循环,将从a[i]至a[j]所有的数相加,最后求出最大子序列和。原创 2020-08-23 00:52:48 · 1408 阅读 · 1 评论