刷一发存在感
好久没写博客了:D 学校里混了一年,实现是混不下去了,只好出来实习,结果发现自己offer烂的一笔。。。(果然学渣是没出路的吗。。)
今天就是标记,改天发发些干货~ ~
好久没写博客了:D 学校里混了一年,实现是混不下去了,只好出来实习,结果发现自己offer烂的一笔。。。(果然学渣是没出路的吗。。)
今天就是标记,改天发发些干货~ ~
最长连续子序列 longest consecutive sequence 问题的升级版
,大家一定很熟LCS问题的求解方法,甚至他的单调队列优化版本(栈优化)。
这里我们将讨论其变形版:给出一系列的随机的整数数列。要求在$O(n^2)$的时间复杂度内求解出一个最长的子序列并且为等差数列。
这里需要注意的是题目描述里并没有说明是输出等差数列的长度还是等差数列本身。
这其实也是一个被别人研究过的问题,我这里只是给出这一问题的简单总结
一个比较简单粗暴的方法就是枚举每两个数列项,在哈希表中维护[num, d]状态的个数,记录所有可能出现的等差数列。
1 | for i in range(n-1, 0) |
显然下面的描述也是等效的:
1 | for i in range(0, n-1) |
1 | int main(int argc, char const* argv[]) { |
当然如果是自己编写的哈希表效率会更好些。
这里给出另一个dp的解法,用dp(i,j)表示第i项与第j项构成的等差数列的数量。
1 | #define MAX_N 10001 |
如果我们把问题条件改一下,输出不是子序列,而是一个子集,这个自己可以构成等差数列,那么这个问题怎么求解?其实我们只要先排序就好了。
n个球放到m个盒子里,根据球和盒子是否有区别以及是否允许有空盒有${ 2 } ^{ 3 }=8$种放球问题:求如下问题的放球方案数
注:
S(n,m)为第二类斯特林数
G(x)为母函数
C(n+m-1,n)为多重组合
$ d(i, j) = \sqrt [ p ]{ { ({ x }_{ i1 }-{ x }_{ j1 }) }^{ p }+{ ({ x }_{ i2 }-{ x }_{ j2 }) }^{ p }+…+{ ({ x }_{ il }-{ x }_{ jl }) }^{ p } } $
p = 2 , Euclidean distance 欧几里得距离
$ d(i, j) = \sqrt{ { ({ x }_{ i1 }-{ x }_{ j1 }) }^{ 2 }+{ ({ x }_{ i2 }-{ x }_{ j2 }) }^{ 2 }+…+{ ({ x }_{ il }-{ x }_{ jl }) }^{ 2 } } $
最近遇到一个很郁闷的事情,就是本来能运行的项目突然就crash了,郁闷之余发现是一个软件的版本太高了(囧)。那为啥以前就没事呢?再思考一下估计是自己写的滚动更新的脚本的毛病,本来是想省事的却反而弄巧成茁。。。
具体点今天的问题就是opencv的libopencv_highgui.2.4.dylib,所依赖的libImath-2_1.11.dylib找不到了,那libImath是啥呢?一查居然是一个叫做ilmbase的软件的动态库文件。。。
那既然知道了问题所在,解决方法就有了,很简单就是指定版本重装ilmbase。
这里再给个brew的小技巧:
brew pin ilmbase
brew pin openexr
上面两个命令的意思就是说固定软件版本,很简单易用吧~~
homebrew的ruby包: