zoukankan      html  css  js  c++  java
  • 一类 O(1) 算法的总结

    这里要注意一下, 一部分 O(1) 算法是需要 (O(n)) 或者 (O(sqrt n)) 预处理的...

    1.

    O(1) 求 1~n 的异或和:

    inline int calc(R int n){int t=n&3;return t&1?(t/2^1):(t/2^n);}
    

    2.

    O(1) GCD:

    zzq 大佬的 blog 里面有写,我还搬下来做过板子...

    某些 数据下会比带 log 的算法高到不知道哪里去,然鹅随机情况嘛...咳咳,我只能说,人家 O(1) 是要预处理的...

    3.

    O(1) 前缀 k 次和:

    类似这么个式子: (sum_{i=0}^n i^k) (虽说左边界是 0 是 1 没什么关系,毕竟 k 也不会等于 0 )

    对于 k=1 : 原式= ((n+1)nover 2)

    对于01314413 k=2 : 原式= (n(n+1)(2n+1)over 6) 或者 (n(n+{1over 2})(n+1)over 3) 也挺好记的

    对于 k=3 : 原式= ((n+1)^2n^2over 4) ,其实就是 k=1 的情况平方了一下...

    4.

    O(1) 逆元

    需要 O(n) 预处理,详情看这里呗,顺便 O(n) 前缀积一下就是阶乘逆元了

    5.

    O(1) 快速幂

    一个大前提是快速幂的底数 x 固定,比如说是 2

    这样我们可以 (O(sqrt P)) 预处理出 (x^0,x^1,...,x^{sqrt P -1} , x^{sqrt P},x^{2 sqrt P},...,x^{P})

    然后我们就可以愉快地 O(1) 查询了

  • 相关阅读:
    https-->http and http-->https bitransfer
    socat
    docker daemon configuration
    centos 7 update to python V3.43 to assure git clone as usual
    df and du
    SS iproute2,nslookup,dig
    jmxtrans
    web.xml之env-entry
    Java发送Http请求
    elasticsearch在CentOS环境下开机启动
  • 原文地址:https://www.cnblogs.com/Judge/p/10927954.html
Copyright © 2011-2022 走看看