• 一些常用的数学知识与算法


    # 中位数Median与平均数的性质:

    1, 对于数字A[], 给一个值 T,求 Σ |A[i] - T|,当T = Median时,结果最小。

    数组中所有数和Median的差的绝对值之和最小。

    应用 TopCoder SRM 645DIV2-500

    2, 平均数AVG的性质:

    数组中所有数和AVG的差的平方和最小。

    # gcd(greatest common divisor) 和 lcm(lowest common multiply)满足结合率

    求一堆数的gcd或者 lcm,只要先求出前两个,然后挨个求当前结果和下一个数的gcd(lcm) 即可

    # 求N以内的所有质数,或者求所有从小到大的质数中第K个质数

    1, 求N以内的所有质数

    Sieve of Eratosthenes 

    2, 求第K个质数

    估计N内所有的质数的个数的算法是N/ln(N),这是个N > 2 后就开始单调递增的函数。因此可以用二分法估算出N的大小,再利用上面的方法求出N 内第K个质数。

    参考:http://program-think.blogspot.com/2011/12/prime-algorithm-1.html#head-4

    # 数组的suffle方法,保证每种permutation出现的概率相等

    Fisher–Yates_shuffle

    # 格雷码 Gray code

    从0开始数,第n个Gray code 为 (n>>1)^n

    # AC自动机算法 Aho-Corasick automation

    多模匹配算法之一。常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。

    http://www.cppblog.com/mythit/archive/2009/04/21/80633.html

    # 后缀树

    http://taop.marchtea.com/08.06.html

    ### 后缀数组,suffix tree 的O(n)版本

    http://dongxicheng.org/structure/suffix-array/

    ### 类似的还有 Ukkonen 的后缀树

    http://www.oschina.net/translate/ukkonens-suffix-tree-algorithm-in-plain-english

    # Treaps,一个比较容易实现的balanced tree

    https://pavpanchekha.com/blog/treap.html

    http://dongxicheng.org/structure/treap/

    http://www.cnblogs.com/huangxincheng/archive/2012/07/30/2614484.html

    # skip list

  • 相关阅读:
    tyvj1117 拯救ice-cream
    codevs3410 别墅房间
    codevs1099 字串变换
    codevs1226 倒水问题
    codevs2449 骑士精神
    codevs1225 八数码难题
    Wikioi 3776 生活大爆炸版石头剪子布
    codevs1197 Vigenère密码
    枚举 + exgcd
    C++ 排序引用的优化
  • 原文地址:https://www.cnblogs.com/felixfang/p/4293653.html
Copyright © 2020-2023  润新知