摘要:相对于转载文章,我更喜欢写上一篇笔记,开篇给出原文链接。这样,能有些自己的东西,总结一番,对知识的理解能加深一层;别人看来,也更有价值。 今天做USACO题目时,一道题不会,网上查到解法是01背包,于是重新看了《背包九讲》。相比第一次看,理解深的多,可见我还是在进步的,只要我没停下脚步。如果大...
阅读全文
摘要:单源最短路,复杂度是O(N²),堆优化的是O(NlogN)。基本思想是贪心,每次都加入一个当前最近的点,可以证明每次当时最近的点就是当前最短的路径。因此,所有点都加入之后,起点到所有点的最短路径就都求出来了。 在实现中,需要注意的是,在堆中的某个点i,不只要存当前到i的最短路径长度d[i],还...
阅读全文
摘要:SPFA的全称是Shortest Path Faster Algorithm,一看名称八成就是中国人起的名字,因为外国人起算法名称一般都会写上自己的名字,很少谦虚。实际上,这是西南交通大学段凡丁同学于1994年发表的,是针对Bellman-Ford算法的改进。在此不过多介绍背景,直接介绍SPF...
阅读全文
摘要:今天写写最短路径的Floyd算法(有翻译叫弗洛伊德,不过这奇葩翻译用来读读就好……)。 这个算法的实质,广义来讲,其实是DP(动态规划)。其实按说,算法应该先说说什么贪心、搜索、DP、二分之类的基本算法的,但我觉得太广的东西对没有基础的人来说讲起来不清楚,还是先写写比较典型的一些算法比较好。而...
阅读全文
摘要:快速排序,简称快排,常称QuickSort、QSort。在排序算法中非常常用,其编程复杂度低,时间复杂度O(NlogN),空间复杂度O(N),执行效率稳定,而且常数很低。 基本思想就是二分,例如你要将N个数排序,你调用了QSort(1,N)。那么快排会这样做: 1、找出一个数x 2、将N个数分成两部
阅读全文
摘要:现在大二正在上《数据结构》课,课内的书上代码实现很喜欢无脑用类、变量名字很长,而且常常实现太繁琐,并且代码有些无法运行,这些对于老手无所谓,但初学者看起来却会很不舒服。因此写点自己的代码,大家可以借鉴一下,顺便自己总结一下热热手。 之前已经写了“《数据结构》C++代码”系列,但是由于课内安排了...
阅读全文