简单行程
今天和昨天相比没啥变化,但还是有一下几点变化:
- 中午换了一家饭店
- 早饭的菜和昨天不一样
- 今天刷的水题没有昨天多
- 今天学的知识比昨天多了不少
其他的就没啥不同的了。
Summary:总的来说,还可以,学了不少知识,非常愉♂悦。
学到了什么?
- 开O2优化,快排和桶排速度差不多;但是如果不开O2优化,快排要比桶排速度慢。
- 倍增的本质是分治。
- 求LCA问题的三种方法的比较(详情见附件)。
- 离线和在线的意义(详情见附件)。
- {x|存在k∈N,使得x≡k*a(mod b)}的元素个数为b/gcd(a,b)。
- 逆元可以用于处理除法过程中需要取模运算的情况(详情见附件)。
- 求逆元的两种常用方法的比较(详情见附件)。
- 欧拉筛(日后会专门写博文介绍)。
大概就是这样,还有些不太重要的就没往上写了,下面,将在附件中详细讲一下某些知识点。
附件
LCA问题的三个常用方法比较
倍增
优点:好写
缺点:时空复杂度都高,而且要求在线。
tarjan方法
优点:时间复杂度理论上是三种中最低的一个,而且可以离线。
数链剖分
优点:时间复杂度实际上最低。
缺点:要求在线。
离线和在线的意义
在线
啥叫在线?很简单,就是指,每读入一个问题,就可以立刻解决它,给出答案。(看不懂的话,看看离线的意义)
离线
相对于在线 ,离线是指需要一次性将所有的问题读入,然后依据各个问题之间的联系来解决每个问题。
逆元的用处
简单给出逆元的定义:a*a^(-1)≡1(mod P)
注意:这里a^(-1)只是个符号,a和a^(-1)都是整数。
逆元的用处在于求x/a%p,因为x/a%p!=(x%p)/(a%p),所以不便于操作。我们可以利用逆元来进行转化。
x/a%p=(x/a%p)*1=(x/a%p)*(a*a^(-1)%p)=x*a*a^(-1)/a%p=x*a^(-1)%p
这样就成功转化为两个整数相乘取模了。
求逆元两种常用方法的比较
扩展欧几里德算法
优点:速度快,适用面广。
费马小定理
优点:好写。