大力出奇迹
seagullyoyo
for the load your god is with you whereever you go
展开
-
快速SELECT算法
#include #include using namespace std;int a[] = { 4, 3, 6, 8, 10, 9, 2, 5, 7, 1 };void select(int a[], int lhs, int rhs, int k){ if(lhs > rhs || k < 0) return; int i = lhs, j = rhs, pivo原创 2014-09-04 09:44:47 · 833 阅读 · 0 评论 -
不相交集 POJ1182 食物链
#include using namespace std;struct node{ int father; int relation;};node p[50010];void make_set(int val){ p[val].father = val; p[val].relation = 0;}void init(){ for(int i = 0; i <原创 2014-08-15 08:53:17 · 374 阅读 · 0 评论 -
3.9重建二叉树
#include using namespace std;struct Node{ Node() : lchild(0), rchild(0){ } Node(char v):val(v), lchild(0), rchild(0){ } char val; Node *lchild, *rchild;};void Rebuild(char *pPreOrde原创 2014-09-10 17:21:08 · 470 阅读 · 0 评论 -
3.10 分层遍历二叉树
#include #include using namespace std;struct Node{ Node(int v) : val(v), lchild(0), rchild(0) {} int val; Node *lchild, *rchild;};vector > vv;int lev = 0;void level_walk(){ vector::it原创 2014-09-10 17:40:47 · 428 阅读 · 0 评论 -
PV生产者消费者问题
#define N 100typedef semaphore int;semaphore muxtex = 1; //临界区锁,用于防止生产者消费者同时访问临界资源 semaphore full = 0; //有面包的格子数 semaphore empty = N; //没面包的格子数 void consumer(void){ int item; while原创 2014-08-27 15:31:13 · 1758 阅读 · 0 评论 -
负数在前正数在后且顺序不变
简单说下题意: 给一个整形数组,如:1, 7, -5, 9, -12, 15,处理后原创 2014-09-10 11:06:46 · 1004 阅读 · 0 评论 -
动态规划解各种子序列问题
1、最长公共序列(LCS)#include #include using namespace std;#define UP 1#define LEFT 2#define SLOPE 3int dp[50][50];int road[50][50];char a[] = "ALGORITHM";char b[] = "ALTRUISTIC";void print原创 2014-09-08 15:37:53 · 956 阅读 · 0 评论 -
hash相对B树优缺点
哈希表是种数据结构,它可以提供快速的插入操作和查找操作。第一次接触哈希表时,它的优点多得让人难以置信。不论哈希表中有多少数据,插入和删除(有时包括侧除)只需要接近常量的时间即0(1)的时间级。实际上,这只需要几条机器指令。对哈希表的使用者一一人来说,这是一瞬间的事。哈希表运算得非常快,在计算机程序中,如果需要在一秒种内查找上千条记录通常使用哈希表(例如拼写检查器)哈希表的速度明显比树快,树的操原创 2014-08-22 13:33:04 · 3435 阅读 · 0 评论 -
ID3&C4.5的区别
ID3算法是决策树的一个经典的构造算法,在一段时期内曾是同类研究工作的比较对象,但通过近些年国内外学者的研究,ID3算法也暴露出一些问题,具体如下: (1)信息增益的计算依赖于特征数目较多的特征,而属性取值最多的属性并不一定最优。 (2)ID3是非递增算法。 (3)ID3是单变量决策树(在分枝节点上只考虑单个属性),许多复杂概念的表达困难,属性相互关系强调转载 2014-08-10 15:41:51 · 920 阅读 · 0 评论 -
位运算笔记
2.5 亿个数的去重在 2.5 亿个整数中找出不重复的整数,注,内存不足以容纳这 2.5 亿个整数分析:采用 2-Bitmap(每个数分配 2bit,00 表示不存在,01 表示出现一次,10 表示多次,11 无意义)进行,共需内存 2^32 * 2 bit=1 GB 内存,还可以接受。然后扫描这 2.5 亿个整数,查看 Bitmap 中相对应位,如果是 00 变 01,01原创 2014-08-22 16:40:11 · 572 阅读 · 0 评论 -
KMP算法笔记
有了覆盖函数,那么实现kmp算法就是很简单的了,我们的原则还是从左向右匹配,但是当失配发生时,我们不用把target_index向回移动,target_index前面已经匹配过的部分在pattern自身就能体现出来,只要动pattern_index就可以了。当发生在j长度失配时,只要把pattern向右移动j-overlay(j)长度就可以了。也即将j前移。算法快在于,i只加从不减,只有短原创 2013-09-01 17:06:21 · 588 阅读 · 0 评论 -
Dijkstra笔记
Dijkstra算法是典型最短路径算法,用于计算一个节点到其他所有节点的最短路径。不过,针对的是非负值权边。因为Dijkstra算法总是在V-S中选择“最轻”或“最近”的顶点插入到集合S中,所以我们说它使用了贪心策略。原创 2013-09-10 15:12:07 · 604 阅读 · 0 评论 -
DP最长公共子序列LCS问题笔记
动态规划一般也只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全满足,故有时需要引入一定的近似)。简单地说,问题能够分解成子问题来解决。好,接下来,咱们讨论适合采用动态规划方法的最优化问题的俩个要素:最优子结构性质,和子问题重叠性质。最优子结构 如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具原创 2013-09-13 20:10:38 · 928 阅读 · 0 评论 -
打印字符串所有字串
#include using namespace std;int main(void){ char a[] = "abcde"; int len = strlen(a); unsigned int n = 0x1; for(int i = 1; i < len; ++i) { n |= (n << 1); } while(n) { unsigned int t原创 2014-09-03 16:03:15 · 549 阅读 · 0 评论 -
manacher hdu3068
#include #include #include #include using namespace std;const int length = 110000 + 10;char s[length * 2];int p[length * 2]; int main(void){ freopen("1.txt", "r", stdin); while(scanf("%原创 2014-09-03 15:11:15 · 412 阅读 · 0 评论 -
自己写atoi
#include using namespace std;const int maxv = (1 << 31) - 1;const int minv = (1 << 31) ;int strToInt(const char *str){ if(!str) exit(-1); char *p = const_cast(str); int re = 0; bool nage原创 2014-09-02 16:40:19 · 443 阅读 · 0 评论 -
Hash和Bloom Filter
本文转载自:http://www.sigma.me/2011/09/13/hash-and-bloom-filter.html这几天的“科研”中涉及到了一个概念,Bloom Filter(有的中文翻译为布隆过滤器,不知道正确否),今天看了下相关的资料,发现这东西和Hash还挺有关系的,在这里一并讲下。Hash(函数/表)Hash (中译为哈希,或者散列)函数在计算机领域,尤转载 2014-08-19 17:07:11 · 1551 阅读 · 0 评论 -
DP解编辑距离
#include using namespace std;char *a = "ALGORITHM";char *b = "ALTRUISTIC";int dp[20][20];int main(void){ dp[0][0] = 0; int len1 = strlen(a), len2 = strlen(b); for(int i = 1; i <= len1; ++原创 2014-09-13 19:54:07 · 589 阅读 · 0 评论 -
Hash表算法笔记
哈希表的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起原创 2013-09-14 20:17:43 · 812 阅读 · 0 评论 -
红黑树学习tips
内存中的索引通常采用BST、红黑树,外存中通常采用B树、B+树B原创 2014-08-16 19:07:52 · 347 阅读 · 0 评论 -
软硬件接口小笔记-内存结构
在cache中,一个hit可以比一个miss快原创 2014-08-17 11:47:40 · 695 阅读 · 0 评论 -
B-tree、B+tree
B树B树是为硬盘等存储设备设计的一种平衡查找树原创 2014-08-15 19:14:57 · 482 阅读 · 0 评论 -
GBDT(MART) 迭代决策树入门教程 | 简介
在网上看到一篇对从代码层面理解gbdt比较好的文章,转载记录一下: GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力(g转载 2014-08-10 15:45:32 · 435 阅读 · 0 评论 -
闲来无事,用C写个朴素贝叶斯
#include #include #include using namespace std;const int MaxVocabNum = 50;char *postingList[] = { "my dog has flea problem help please", "maybe not take him to dog park stupid", "my dalmatio原创 2014-09-06 15:34:22 · 810 阅读 · 0 评论 -
Q13.4深拷贝和浅拷贝的区别
题目原文:What is the difference between deep copy and shallow copy? Explain how you would use each.译文:深拷贝和浅拷贝的区别是什么?你会如何使用它们?转载 2014-07-24 16:33:42 · 522 阅读 · 0 评论 -
函数指针
1.简单的函数指针的应用形式1:返回类型(*函数名)(参数表) [cpp] view plaincopychar (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2);转载 2014-07-24 13:56:03 · 297 阅读 · 0 评论 -
内存结构
一个由c/c++编译的程序占用的内存分为以下几个部分:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量原创 2014-07-23 23:32:09 · 414 阅读 · 0 评论 -
快速排序
1.每个partition会把pivot放到它最终该待的地方。原创 2014-06-29 20:05:02 · 421 阅读 · 0 评论 -
HDU1007_分治_找最小距离点对
#include #include #include using namespace std;typedef struct Node{ double x, y; }Node;Node array[100010];Node a[100010];const int inff = 65535;bool cmpx(Node a, Node b){ return a.x <原创 2014-06-30 11:28:47 · 400 阅读 · 0 评论 -
并查集
等价关系与等价类从数学上看,等价类是一个对象(或成员)的集合,在此集合中的所有对象应满足等价关系。若用符号"≡"表示集合上的等价关系,那么对于该集合中的任意对象x,y, z,下列性质成立:1、自反性:x ≡ x2、对称性:若 x ≡ y 则 y ≡ x3、传递性:若 x ≡ y 且 y ≡ z 则 x ≡ z因此,等价关系是集合上的一个自反、对称、传递的关系转载 2014-04-28 20:45:31 · 419 阅读 · 0 评论 -
田忌赛马解题报告
背景:tianji 和 king 赛马tianji原创 2014-04-26 22:17:19 · 1001 阅读 · 0 评论 -
转一个各种排序的动画
1 快速排序介绍: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,转载 2014-04-24 15:52:54 · 575 阅读 · 0 评论 -
堆排,tips&&codes
1.添加元素总是从叶子添,删除元素总是原创 2014-04-23 10:54:20 · 614 阅读 · 0 评论 -
Q13.3 关于虚表指针、虚函数表、虚函数表中虚函数地址
第一个小白问题,why地址数组()原创 2014-07-24 14:48:40 · 548 阅读 · 0 评论 -
Q13.6 C++名字隐藏
题目原文:What is name hiding in C++?译文C++中名字隐藏是什么?解答让我们通过一个例子来讲解C++中的名字隐藏。在C++中,如果一个类里有一个重载的方法, 你用另一个类去继承它并重写(覆盖)那个方法。你必须重写所有的重载方法, 否则未被重写的方法会因为名字相同而被隐藏,从而使它在派生类中不可见。转载 2014-07-24 17:08:23 · 437 阅读 · 0 评论 -
Q13.7
题目原文:Why does a destructor in base class need to be declared virtual?译文:为什么基类中的析构函数要声明为虚析构函数?解答用对象指针来调用一个函数,有以下两种情况:如果是虚函数,会调用派生类中的版本。如果是非虚函数,会调用指针所指类型的实现版本。析构函转载 2014-07-24 17:17:18 · 478 阅读 · 0 评论 -
边读边捋【july的】海量数据处理面试题
1。寻找 TOP IP海量日志数据,提取出某日访问百度次数最多的那个 IP。原创 2014-08-21 21:26:02 · 589 阅读 · 0 评论 -
trie树 HDU1671
#include using namespace std;struct trie{ trie():end(false) { for(int i =0; i < 10; ++i) next[i] = NULL; } bool end; trie *next[10];};void insert(trie *root, const char *a){ trie *p原创 2014-08-21 15:33:14 · 366 阅读 · 0 评论 -
C++中的static关键字
本文转自:http://blog.csdn.net/hackbuteer1/article/details/7487694C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该转载 2014-08-08 16:50:53 · 293 阅读 · 0 评论 -
trie树 hdu1251
#include using namespace std;struct trie{ trie():occur(0){ for(int i = 0; i < 26; ++i) next[i] = NULL; } trie *next[26]; int occur;};trie *root = new trie;void insert(char *a){ int原创 2014-08-21 10:13:44 · 443 阅读 · 0 评论