这里要注意一下, 一部分 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)n\over 2\)

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

对于 k=3 : 原式= \((n+1)^2n^2\over 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) 查询了

一类 O(1) 算法的总结的更多相关文章

  1. scikit-learn 支持向量机算法库使用小结

    之前通过一个系列对支持向量机(以下简称SVM)算法的原理做了一个总结,本文从实践的角度对scikit-learn SVM算法库的使用做一个小结.scikit-learn SVM算法库封装了libsvm ...

  2. [0x01 用Python讲解数据结构与算法] 关于数据结构和算法还有编程

    忍耐和坚持虽是痛苦的事情,但却能渐渐地为你带来好处. ——奥维德 一.学习目标 · 回顾在计算机科学.编程和问题解决过程中的基本知识: · 理解“抽象”在问题解决过程中的重要作用: · 理解并实现抽象 ...

  3. MapReduce 支持的部分数据挖掘算法

    MapReduce 支持的部分数据挖掘算法 MapReduce 能够解决的问题有一个共同特点:任务可以被分解为多个子问题,且这些子问题相对独立,彼此之间不会有牵制,待并行处理完这些子问题后,任务便被解 ...

  4. Matlab实现K-Means聚类算法

    人生如戏!!!! 一.理论准备 聚类算法,不是分类算法.分类算法是给一个数据,然后判断这个数据属于已分好的类中的具体哪一类.聚类算法是给一大堆原始数据,然后通过算法将其中具有相似特征的数据聚为一类. ...

  5. FP—Growth算法

    FP_growth算法是韩家炜老师在2000年提出的关联分析算法,该算法和Apriori算法最大的不同有两点: 第一,不产生候选集,第二,只需要两次遍历数据库,大大提高了效率,用31646条测试记录, ...

  6. Standford机器学习 聚类算法(clustering)和非监督学习(unsupervised Learning)

    聚类算法是一类非监督学习算法,在有监督学习中,学习的目标是要在两类样本中找出他们的分界,训练数据是给定标签的,要么属于正类要么属于负类.而非监督学习,它的目的是在一个没有标签的数据集中找出这个数据集的 ...

  7. 实验楼 1. k-近邻算法实现手写数字识别系统--《机器学习实战 》

    首先看看一些关键词:K-NN算法,训练集,测试集,特征(空间),标签 举实验楼中的样例,通俗的讲讲K-NN算法:电影有两个分类(标签)-动作片-爱情片.两个特征--打斗场面--亲吻画面. 将那些数字和 ...

  8. Java程序算法设计视频分享,需要的来

    每年都会有人说,IT行业饱和了,根本就找不到工作,其实,我想说的是,不是工作难找,而是你自己不够好! 前几天看到一CEO在微博上吐槽: 前几天招一算法工程师我们给了8万月薪*14+奖金,人家去阿里拿5 ...

  9. 一句话总结kNN算法

    一句话总结kNN算法 核心:模板匹配,将样本分到离它最相似的样本所属的类. kNN算法本质上使用了模板匹配的思想.要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本 ...

随机推荐

  1. LA4043 - Ants(二分图完备最佳匹配KM)

    option=com_onlinejudge&Itemid=8&page=show_problem&problem=2044">https://icpcarch ...

  2. 为activity添加左右手势识别

    android开发中为activity添加左右手势识别.如右滑关闭当前页面 /* * for左右手势 * 1.复制以下的内容到目标Activity * 2.目标Activity的onCreate()调 ...

  3. mt7620 wifi driver

    <*> Ralink RT2860 802.11n AP support [*] LED Support [*] WSC (WiFi Simple Config) [*] WSC 2.0( ...

  4. EasyBCD在windows7基础上安装Ubuntu 14.04双系统详

    把下载好的ubuntu安装包放在C盘根文件夹下,利用Daemon Tools 将安装包下casper文件夹的vmlinuz.efi和initrd.lz复制到C盘根文件夹下,紧接着打开easybcd,在 ...

  5. 设置GridCtrl中的Checkbox 为不可编辑

    m_Grid.SetCellType(index, 1, CGridCtrl::CellType_Check);   //设置第index行.第一列的单元格为类似CheckBox的模样    m_Gr ...

  6. Spring Boot 动态数据源(多数据源自己主动切换)

    本文实现案例场景: 某系统除了须要从自己的主要数据库上读取和管理数据外.另一部分业务涉及到其它多个数据库,要求能够在不论什么方法上能够灵活指定详细要操作的数据库. 为了在开发中以最简单的方法使用,本文 ...

  7. 备忘录模式-Memento

    备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将该对象恢复到原先保存的状态. 备忘录模式结构图: 何时使用备忘录模式: Memento模式比适合 ...

  8. java和jar命令

    IDEA打可运行jar http://bglmmz.iteye.com/blog/2058785 -jar参数运行应用时classpath的设置方法 你是否在使用java -jar参数运行打包好的ja ...

  9. JVM内存分配策略、各个代区、FullGC/MinorGC

    主要讨论默认的Serial/Serial Old内存分配: 一.几种分配方案 1.  对象优先在Eden分配: 一般情况下,对象会在新生代的Eden区分配,Eden区没有足够空间时,虚拟机会 发起一次 ...

  10. hihocoder 1082 然而沼跃鱼早就看穿了一切 (替换指定的串 )

    #1082 : 然而沼跃鱼早就看穿了一切 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 fjxmlhx每天都在被沼跃鱼刷屏,因此他急切的找到了你希望你写一个程序屏蔽所有句 ...