未来心不可得

2017年11月

November 24, 2017

Shuffle & next-permutation

Fisher-Yates shuffle Modern method. https://en.wikipedia.org/wiki/Fisher-Yates_shuffle#Modern_method 易于理解,从最后一个开始loop,在他之前(包括他本身)随便找一个,跟他swap。vector<int> shuffle(vector<int> a) { fo...
November 24, 2017

Suffix array 后缀数组

Introduction模版中涉及了若干个变量array ss[] : 待处理的字符串pos : 表示ss[pos],这个下标,通常指ss[pos->...]这个suffixarray rank[pos] : suffix ss[pos->...] 排第几。array sa[k] or Ith[k] : 排名第k-th的suffix在哪(指的是ss[Ith[k]->...]...
November 23, 2017

Unrolled linked list 块状链表的一种实现

看了好多文档,依然不得要领。Argument好像这个Unrolled Linked list和块状链表不是一个东西,就暂且认为Unrolled Linked list是一个指导意见好了。。看了几个介绍,有关于maintain操作,只给出了sqrt(n)的理论值,我用了这个方法实现:算两个初始值 BlockSize1=sqrt(n), BlockSize2=1.4*sqrt(n) 这个1.4随...
November 20, 2017

Aho-Corasick AC自动机

http://www.geeksforgeeks.org/aho-corasick-algorithm-pattern-searching/Part1先来加深一下对Trie的理解:structs TrieNode { bool flag; Trie nxt[26]; };(root) --b--> (Node) --u--> (Node) --s-->(No...
November 15, 2017

Convex hull / Andrew algorithm.

Dot Product && Cross Product.In 2D-coordinate, we have two point A(x1,y1) and B(x2,y2);A·B = A*B*Cos(θ);A×B = x1*y2 - x2*y1;A×B means the parallelogram's area by line(O->A), line(O->B). Using...