随笔分类 - Algorithm
摘要:参考: http://www.renfei.org/blog/bipartite-matching.html http://dsqiu.iteye.com/blog/1689505 http://www.cnblogs.com/kuangbin/archive/2012/08/19/2646535.
阅读全文
摘要:参考:http://blog.csdn.net/yutianzuijin/article/details/45116705# TODO
阅读全文
摘要:对DAG进行拓扑排序的朴素算法: 上面算法简单来说就是每个节点维护一个入度数,把入度数为0的节点加入集合S,每次从S中选取节点删除,并更新相应节点的入度,把入度变为0的节点加入S。 证明:反证法。如果G不是连通图,且有k个连通子图,则k>1。由于每个点都连着另外n/2个点,那么这个点和另外n/2至少
阅读全文
摘要:但是每次操作是O(logn)的。
阅读全文
摘要:男女匹配算法: 一种最坏的情况就是,所有男人和女人对对方的排序都是样的,而且算法选择的时候是从男士排名最差到最好进行进行。这时候算法要运行n^2次。 问题1:对任意情况,是否都存在一种自由男士的选取顺序,使得不会有新的自由男士出现(已配对男士变成自由男士)? 问题2:是否存在一种情况,在这种情况里,
阅读全文
摘要:#include #include #include #include #include #include using namespace std; const int MAXINT = 32767; const int MAXNUM = 10; int dist[MAXNUM]; int prev[MAXNUM]; int len; int v00 = 0; int A[MA...
阅读全文
摘要:北京大学OJ1182 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 64641 Accepted: 18999 Description 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C
阅读全文
摘要:第一种,试除法 第二种,先求质数,在试除质数 #include <iostream>#include <vector>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath> using namespace std
阅读全文
摘要:问题: 拿POJ 2533来说。 Sample Input 71 7 3 5 9 4 8 Sample Output(最长上升/非降子序列的长度) 4 解法一(O(n^2)): 如何把这个问题分解成子问题呢?经过分析,发现 “求以ak(k=1, 2, 3…N)为终点的最长上升子序列的长度”是个好的子
阅读全文
摘要:测例: 30 53 4 6 8 4 1 4 12 4 5 1234 34 54 213 12 3 6456 121 434 12 3 2 1234 234 234 45 1 34 6 2341 34 823 291 2513 29 #include <iostream>#include <vecto
阅读全文
摘要:一道OJ题:https://leetcode.com/problems/count-of-smaller-numbers-after-self/ 1.暴力 时间复杂度O(n^2) 2.归并排序 O(nlog(n)) 在合并的过程中是将两个相邻并且有序的序列合并成一个有序序列,如以下两个有序序列 Se
阅读全文
摘要:问题描述: 输入一组整数,求出这组数字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那个序列。例如: 序列:-2 11 -4 13 -5 -2,则最大子序列和为20。 序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,则最大子序列和为16。 算法一: //穷举法,复杂
阅读全文
摘要:基于快排的选择算法:就是从数组中随机选一个数,比这个数小的放左边,大的放右边,如果放左边的数的个数等于k-1,说明现在选的这个数就是第k大的数。如果放左边的数的个数大于k个,则递归寻找左边的数组中的第k小的元素,找出的这个数,就是原来数组中的第k大元素。如果放左边的数的个数小于k个,则在右边的...
阅读全文