随笔分类 -  (算法录)

摘要:1: 问题: 对于一个DAG(有向无环图),求点的排序,使得排在后面的点不能通过一条路径到前面的点。 如图,他的其中一个拓扑排序是 1,2,3,4,5,但是1,2,5,3,4不行,因为3能到5。 求解算法: 可以看出如果某个点有入边,也就是有其他的点能够到这个点,那么显然这个点不能被放在开... 阅读全文
posted @ 2015-12-22 16:27 WhyWhy。 阅读(1200) 评论(0) 推荐(0)
摘要:BST就是二叉检索树,或者是二叉排序树,或者叫二叉搜索树等等。 BST的平衡问题可以去学习AVL树或者Treap或者Splay这些平衡树。 BST的一些高级应用: 1,求BST中比k小的数的个数: 只需在BST上面多维护值size,表示当前这个节点的子树的点的个数。 伪代码如下: 1 ... 阅读全文
posted @ 2015-12-22 15:35 WhyWhy。 阅读(654) 评论(0) 推荐(0)
摘要:1: 问题如下: 求 a^n % m 的值是多少?n是1到10^18次方的一个整数。 求一个数的n次方,朴素的算法就是直接for循环,O(N)的复杂度。 但是对于这个问题n实在是太大了,O(N)也会超时,那么需要更快的算法,快速幂算法。 要求 a^n,如果知道了 a^(n/2) 次方的话,... 阅读全文
posted @ 2015-12-22 15:11 WhyWhy。 阅读(3823) 评论(0) 推荐(0)
摘要:问题如下: 给一个长度为N的数组,a1,a2。。。aN,问其中逆序对的个数,其中逆序对的定义是 iaj 。 1,比较朴素的想法是直接for循环,内层再一个for循环找到这个数前面比他大的个数。1 int getans() {2 int ret=0;3 for(int i=1;... 阅读全文
posted @ 2015-12-22 13:53 WhyWhy。 阅读(1825) 评论(0) 推荐(2)
摘要:队列和栈是很常见的应用,大部分算法中都能见到他们的影子。 而单纯的队列和栈经常不能满足需求,所以需要一些很神奇的队列和栈的扩展。 其中最出名的应该是优先队列吧我觉得,然后还有两种比较小众的扩展就是单调队列和单调栈。 先来看一个问题,给一个长度为N的数列,a1,a2。。。aN,然后给一个ki... 阅读全文
posted @ 2015-12-22 13:15 WhyWhy。 阅读(1544) 评论(1) 推荐(0)
摘要:说一下BFS和DFS,这是个比较重要的概念,是很多很多算法的基础。 不过在说这个之前需要先说一下图和树,当然这里的图不是自拍的图片了,树也不是能结苹果的树了。这里要说的是图论和数学里面的概念。 以上概念来自百度百科。 数学里面的图就是许多的点和许多的边把这些点连了起来,具体每个点放在那... 阅读全文
posted @ 2015-10-18 10:33 WhyWhy。 阅读(65005) 评论(3) 推荐(10)
摘要:二分: 二分不是二分,是二分。就是一分为二的二分。 先来一个例子: 现在有一个递增的序列 a(1), a(2)...a(n),然后让你查找 x 在不在这个序列里面? 显然最简单的做法就是一个for循环,从1到n,看看有没和x相等的。。。 这样确实不错,但是太慢了。。... 阅读全文
posted @ 2015-10-16 23:03 WhyWhy。 阅读(3641) 评论(0) 推荐(1)
摘要:这一篇文章主要说说一些基础算法,这些算是很多其他算法的基石。 主要包括 模拟,暴力,枚举,递归,贪心,分治。 1,模拟: 顾名思义,模拟就是。。。饿,模拟,有一些题目就是给你一些步骤,然后你写代码一步步去模拟那些步骤就行。这类题目主要属于基础题,但是当然如果需要模拟的步骤足够恶心的话,... 阅读全文
posted @ 2015-10-16 21:51 WhyWhy。 阅读(445) 评论(0) 推荐(0)
摘要:一个算法的复杂度可以说也就是一个算法的效率,一般来说分为时间复杂度和空间复杂度。。。 注意接下来说的均是比较YY的,适用与ACM等不需严格分析只需要大致范围的地方,至于严格的算法复杂度分析的那些数学证明,主定理什么的在《算法导论》这本书上有十分详细的讲解,网上应该也会有人写过,这里就不多说了(... 阅读全文
posted @ 2015-10-10 22:07 WhyWhy。 阅读(326) 评论(0) 推荐(0)
摘要:接下来说说一些ACM里面的常识和错误。。。(可能会比较乱) —— 首先ACM里面的代码都是要提交上去,然后让计算机自动判题的,所以。。。千万不要把 system("pause"); 加上去,不管自己怎么搞,提交之前千万记得不要有这句话,不然怎么死的都不知道。 —— 然后就是提交上去之后是立马... 阅读全文
posted @ 2015-10-05 19:40 WhyWhy。 阅读(491) 评论(0) 推荐(0)
摘要:—— 简单介绍一下ACM里面的输入输出。。。 —— 主要说C++的输入输出(其实其他的我不会。。。)。 —— C++里面有输入输出流,也就是cin和cout,用起来也算是比较方便吧。。。 —— 但是,ACMer好像不怎么用这个,大都用scanf,printf这两个不是很方便的C语言遗留输入... 阅读全文
posted @ 2015-10-05 19:30 WhyWhy。 阅读(859) 评论(0) 推荐(0)
摘要:主席树(Chair Tree),一个神奇的数据结构。 实质上是函数式的线段树,或者可持久化的线段树。可持久化这个还比较好理解,Persistent Data Structures,看一下以上这篇文章就差不多明白为啥叫可持久化的的了。但是恕我太弱,对函数式编程实在理解不了多少,所以为啥是函数式的... 阅读全文
posted @ 2015-07-29 20:36 WhyWhy。 阅读(375) 评论(0) 推荐(0)