当我们取模的时候,被模数很大,无法直接计算其值,我们就会用取模运算的下面两个性质:
$$ (a+b) \bmod x=((a \bmod x)+(b \bmod x))\bmod x \\ (a\ast b) \bmod x=((a \bmod x)\ast (b \bmod x))\bmod x $$
那么对于除法,是否也满足这个式子呢?
$$(a \div b) \bmod x=((a \bmod x)\div (b \bmod x))\bmod x$$
当我们取模的时候,被模数很大,无法直接计算其值,我们就会用取模运算的下面两个性质:
$$ (a+b) \bmod x=((a \bmod x)+(b \bmod x))\bmod x \\ (a\ast b) \bmod x=((a \bmod x)\ast (b \bmod x))\bmod x $$
那么对于除法,是否也满足这个式子呢?
$$(a \div b) \bmod x=((a \bmod x)\div (b \bmod x))\bmod x$$
在数论中,对正整数 n,欧拉函数 $\varphi (n)$ 是小于或等于 n 的正整数中与 n 互质的数的数目。此函数以其首名研究者欧拉命名,它又称为 φ 函数(由高斯所命名)或是欧拉总计函数(totient function,由西尔维斯特所命名)。(来自维基百科)
欧几里德算法(Euclidean algorithm)又叫做辗转相除法,用于求最大公约数。这个算法已经十分常见了。扩展欧几里德算法(Extended Euclidean algorithm)是欧几里德算法的扩展(废话……),这个算法在解不定方程的时候十分常见。
现在有N个数,分别为1到N,如果要问你这些数的所有排列中,从小到大数的第N个是多少,如何求解?
显然当N很小时直接写个模拟就可以了。但是这样写的时间复杂度至少是$A_N^N$,也就是$N!$,很容易超时。想想$13!$已经是6227020800了……有没有更快的方法呢?
线段树是非常基础的算法了……
线段树是一种二叉树,可视为树状数组的变种,最早出现在2001年,由程序竞赛选手发明。我们ZS老师说过:“所有可以用树状数组解决的题目都可以用线段树解决,但是部分线段数可以解决的题目却无法用树状数组解决。”由此可见线段树十分强大……
自从360云盘等一大堆云盘关停,百度云盘限速,我就开始想能不能自己搞个云盘之类的东西。当然可以直接用FTP,但是用起来太不方便(谁记得住那一大串IP地址啊……)……直到我找到了这个神器……
作为OIer,写博客的时候经常会遇到需要数学公式的情况,特别是Σ、∈等符号,在markdown里用起来十分不友好(百度百科网络流那一篇就出现了:Σ(w∈V)f(u,w)=0。好在markdown中有插件为我们提供了强大的数学公式显示支持。现在我们就可以这样浪:
$ \displaystyle \sum_{w\in V} f(u,w)=0 $
在C语言中,我们使用宏定义函数这种借助编译器的优化技术来减少程序的执行时间,那么在C++中有没有相同的技术或者更好的实现方法呢?答案是有的,那就是内联函数。内联函数作为编译器优化手段的一种技术,在降低运行时间上非常有用。我们将从:
这四个方面对内联函数进行介绍。
网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关。网络流的理论和应用在不断发展,出现了具有增益的流、多终端流、多商品流以及网络流的分解与合成等新课题。网络流的应用已遍及通讯、运输、电力、工程规划、任务分派、设备更新以及计算机辅助设计等众多领域。
(2018.08.29 更新此文,你没有阅读过的船新版本)
原博客搭建于阿里云主机,空间太小(才200M……),限制也很多,故弃用,搬到这个Bandwagon主机上,然后买了个新域名:skywt.cn…… 原博客已弃用。