随笔分类 -  随笔小乐

一些有趣的算法和设计
turtle海龟作图
摘要:个人心得:python这么火是有他的原因的,突然发现他的语言很有趣,库函数也很多。 这次是第一步,简单了解了一下turtle函数 阅读全文

posted @ 2017-12-14 21:36 余生漫漫浪 阅读(812) 评论(0) 推荐(0)

upper_bound函数,binary_check函数
摘要:个人心得:二分的经典运用,刚开始就是upper_bound可能难以实现一点,还有就是要注意没找到的时候 lower_bound 返回大于等于key的第一个元素的下标。upper_bound 返回大于key的第一个元素的下标(即小于等于key的最后一个元素的下一个元素的下标)。设result为这两个函 阅读全文

posted @ 2017-11-05 18:25 余生漫漫浪 阅读(421) 评论(0) 推荐(0)

最长公共子序列和最长公共子串
摘要:子串就是要连在一起的,而子序列就是满足这同时在1-n的母串中存在就好了。 比如abcdefg 子串有abc 子序列acdfg 动态规划 假设Z=<z1,z2,⋯,zk>是X与Y的LCS, 我们观察到 如果Xm=Yn,则Zk=Xm=Yn,有Zk−1是Xm−1与Yn−1的LCS; 如果Xm≠Yn,则Zk 阅读全文

posted @ 2017-08-03 20:15 余生漫漫浪 阅读(204) 评论(0) 推荐(0)

最大连续子序列和
摘要:给定k个整数的序列{N1,N2,...,Nk },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= k。最大连续子序列是所有连续子序中元素和最大的一个,例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{11,- 阅读全文

posted @ 2017-08-02 20:42 余生漫漫浪 阅读(224) 评论(0) 推荐(0)

容斥原理
摘要:在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。 也可表示为 设S为有 阅读全文

posted @ 2017-08-02 15:07 余生漫漫浪 阅读(349) 评论(0) 推荐(0)

快速幂的知识点
摘要:快速幂,顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。 快速幂运用了位运算。 例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹¹转化为算 这样就大大的减少了运算的步数。 阅读全文

posted @ 2017-08-02 10:37 余生漫漫浪 阅读(276) 评论(0) 推荐(0)

Knuth-Morris-Pratt 算法
摘要:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实现一个next()函 阅读全文

posted @ 2017-08-01 20:33 余生漫漫浪 阅读(534) 评论(0) 推荐(0)

并查集的一些简单了解
摘要:并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。 使用并查集时,首先会存在一组不相交的动态集合 阅读全文

posted @ 2017-07-27 11:35 余生漫漫浪 阅读(230) 评论(0) 推荐(0)

自己设置的纸牌游戏(简单数组栈和队列的设计)
摘要:星期天小白与小婷约在一起玩桌游,他们正在玩一个非常古怪的扑克游戏——“小猫钓鱼”。游戏的规则是这样的:将一副扑克牌平均分成俩份,每人拿一份。小白先拿出手中的第一张扑克牌放在桌上,然后小婷也拿出手中的第一张扑克牌,并放在小白刚打出的扑克牌上面,就像这样俩人交替出牌。出牌时,如果某人打出的牌与桌上某张牌 阅读全文

posted @ 2017-07-22 17:10 余生漫漫浪 阅读(1304) 评论(2) 推荐(0)

大整数乘法(Comba 乘法 (Comba  Multiplication)原理)
摘要:Comba 乘法以(在密码学方面)不太出名的 Paul G. Comba 得名。上面的笔算乘法,虽然比较简单, 但是有个很大的问题:在 O(n^2) 的复杂度上进行计算和向上传递进位,看看前面的那个竖式,每计算一次单精度乘法都要计算和传递进位,这样的话就使得嵌套循环的顺序性很强,难以并行展开和实现。 阅读全文

posted @ 2017-07-21 11:19 余生漫漫浪 阅读(846) 评论(0) 推荐(0)

lower_bound()函数与quicksort()函数的简单掌握
摘要:lower_bound 这个序列中可能会有很多重复的元素,也可能所有的元素都相同,为了充分考虑这种边界条件,STL中的lower_bound算法总体上是才用了二分查找的方法,但是由于是查找序列中的第一个出现的值大于等于val的位置,所以算法要在二分查找的基础上做一些细微的改动。 快速排序(Quick 阅读全文

posted @ 2017-07-19 19:34 余生漫漫浪 阅读(710) 评论(0) 推荐(0)