• CSP 初赛小复习


    针对于两个组别:

    必考点:计算机知识、数学知识、基本算法、程序的理解与实现。

    其中,计算机知识属于常识,此处就不细说,最重要的是扎实。

    数学知识

    1. 时间复杂度

    解决递归式子的时间复杂度问题,一个重要的定理就是 主定理(Master Theorem)

    常见题型就是求  $T(n)=aT(frac{n}{b})+f(n)$ 的 $T$ 的时间复杂度。

    例子:求以下式子的时间复杂度

    $$T(n)=left{
    egin{aligned}
    & 1 & n=1\
    & 2Tleft(frac{n}{2} ight)+1 & n >1\
    end{aligned}
    ight.
    $$

    根据主定理一:

    • 若 $f(n)=O(n^{log_{b}a-epsilon})$,且 $epsilon>0$,那么时间复杂度就是 $Theta(n^{log_{b}a})$。

    此处 $a=b=2$,且 $f(n)=O(1)$,易得 $epsilon=1>0$ 符合条件,所以时间复杂度为 $Theta(n^{log_{2}2})$ 即 $Theta(n)$。

    当然这题因为很特殊,你可以把它想一个分治算法,将每个区间拆成 $2$ 分解决,最后合并。

    所以每个点都会经过一遍,每个点所花费的复杂度为 $O(1)$,总时间复杂度为 $Theta(n imes 1)$ 即 $Theta(1)$。

    2. 质数与筛法

    各个筛法时间复杂度:

    • 暴力枚举 $O(n sqrt n)$;
    • 埃拉托色尼筛法 $O(n log log n)$;
    • 欧拉筛法 $O(n)$。

    而欧拉筛法可以顺带求出 $φ$ 函数,时间复杂度也是 $O(n)$。

  • 相关阅读:
    从scanf的学习接口设计
    特现C语言编程特点的小代码,itoa,数值转换成字符串
    So many good projects for studying C programming lanuage.
    重要算法代码
    选择一本C++教材
    4412 内核模块传参数
    4412 GPIO初始化
    4412 物理地址
    4412 杂项设备
    4412 Linux设备总线
  • 原文地址:https://www.cnblogs.com/zengpeichen/p/13760763.html
Copyright © 2020-2023  润新知