- 博客(15)
- 收藏
- 关注
原创 扩展欧几里德
扩展欧几里德: 两个整数a,b,他们的最大公因数是gcd(a,b),那么对于ax+by=gcd(a,b)这样的不定方程,存在若干对(x,y)使得等式成立,而扩展欧几里得可以求出其中的一对特解。 Start: 对于一个欧几里得求最大公因数的过程: 比如求 a=12 , b=18 的最大公因数 ( 最大公因数是6 ) : ...
2020-03-11 10:41:37
310
原创 欧几里德定理
欧几里德定理 欧几里德定理是用来求两个数的最大公因数的。 int gcd(int a,int b){ return b?gcd(b,a%b):0; } 好像原本的定理上有一条:两个数的最大公因数等于(较小的那个数)与(较大数除以较小数的余数)的最大公因数,但是我没有找到这样的描述。 不过也是可以证明的,求两个整数a,b的最大公因数: a=a%b + kb, k是某个满足等式的...
2020-03-11 10:41:29
954
原创 字符串哈希值
字符串哈希值 使用另一种进制来表示字符串,在该进制表示下的字符串的值即为哈希值。 包含小写字母的字符串,只有26中可能性,可以使用27进制。 自己设定:在26进制下a=1,b=2,c=3..............z=26 那么字符串 "a"的哈希值=1 ,“aa”的哈希值=28。 反之哈希值=1的字符串是 “a”, 哈希值=28 的字符串是“aa”。 哈希值与字符串一一对应。 ...
2020-03-11 10:41:19
911
原创 积性函数
积性函数 定理1. 算术函数f,对于任意两个互质的正整数n、m,都有f(m*n) = f(m) * f(n) ,f 叫做积性函数。 算术函数f,对于任意两个正整数n、m,都有f(m*n) = f(m) * f(n) ,f 叫做完全积性函数。 定理2. 如果f是积性函数,对于任意正整数n,根据算术基本定理n =* * *.............. * 那么f(n...
2020-03-11 10:41:09
339
原创 快速傅里叶变换(FFT)(未完)
快速傅立叶变换(FFT) FFT的里有许多地方我也搞不懂,我不想懂也不需要懂,知道结论能用就行了。。。看了好多天的鬼东西,本来觉得好难,看完之后觉得也不过如此。 快速傅立叶变换FFT,是一种用来加速多项式相乘(卷积)的算法O(n*logn)。 离散傅里叶变换DFT: 传统暴力方式下实现多项式相乘O()。 对于一个多项式:F(x) = + + +.......+, 当x...
2020-03-11 10:40:46
273
原创 蒟蒻的莫比乌斯反演学习笔记
有一个算术函数函数f(x), 而F[x]是定义在x的所有因子上的求和函数, 关键点1: 枚举n和m,没有任何方法可以直接O(1)计算出 [gcd(i,j)==k] 的数量。 但是可以计算k的倍数的数量,gcd(I,j)%k==0的数量=[n/k]*[m/k], 解释为:在n之内任取一个k的倍数,在m之内任取一个k的倍数,所有这样的组合的最 大公因数为k...
2020-03-11 10:40:34
147
原创 线性筛
线性筛 Start. 线性筛它是用来筛选出1-n之内的素数,它的时间复杂接近于O(n)。 它的大致过程是:使用一个长度为 n 的bool数组,刚开始都是未被标记的,从2开始找,将所有合数标记为true(筛选掉合数),没有被标记的就是素数。 而筛选合数的核心思想就是:所有合数都将被它的最小质因子筛掉。 细节:有一个知识点,对于所有的合数,它的最小质因子是唯一的,所以每个合数都有唯一的这样的...
2020-03-11 10:40:15
497
原创 王爽汇编实验12
assume cs:code code segment ;设置es:di start: mov ax,0h mov es,ax mov di,200h ;设置ds:si mov ax,cs mov ds,ax mov s...
2020-03-08 12:41:58
254
原创 王爽汇编实验9
assume ds:data,cs:code data segment db 'welcome to masm!' data ends data2 segment db 2h,24h,71h data2 ends code segment start: mov ax,0b800h mov ds,ax mov bx,0 ...
2020-02-12 16:15:52
207
原创 红黑树
红黑树说难不难,说简单不简单,我去看别人写的红黑树教学,是真的看不懂,于是自己想办法,实现了。 红黑树性质: 性质1. 节点是红色或黑色。 性质2. 根节点是黑色。 性质3 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 性质4. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。 插入: 插入的节点是红色节点,当插入节点的父亲节点是...
2020-01-08 16:12:31
591
原创 Treap树
Treap是真的简单。 为了打破类似单调数列插入BST, 使树退化为链表的情况, 将数据打乱成随机出现的,是个好办法, 然而并不是什么时候都适用。 树上节点的出现顺序是不可修改的, 而Treap则为每个节点新增加一个随机变量, 将矛盾转移到这个随机变量上, 使得对节点进行比较的时候,具有随机性, 从而使得插入,删除等操作的复杂度期望为O(logn)。 Treap性质: ...
2020-01-07 23:33:40
309
原创 AVL树
最古老的平衡二叉树。 AVL树性质: 1.左右子树高度差不超过1. 复杂度: 插入O(logn),最多做两次旋转,若干次维护树高。 删除O(logn),最坏情况做logn次平衡。 旋转操作 插入: 与BST一样,小于当前节点往左子树,大于往有子树。回溯时平衡树高。 删除: 递归查找到目标值的节点, 1.如果目标节点是单链节点(只有一个儿子),或没有儿子的节点,则就地删除,用空...
2020-01-07 23:06:05
459
原创 OJ系统判题思路与代码实现
OJ系统判题思路与代码实现 毕业设计做了个OJ系统,做得不好,打算重做,因为比较感兴趣,涉及到了许多东西,做系统的同时又把我在学校里学的东西给捡了回来,哈哈。 输入: exeFile:源程序文件 codeType:代码类型 test.in:输入文件 test.out:输出文件 timeLimit:时间限制 me...
2019-10-22 01:08:37
6828
8
原创 探究C/C++宏定义的算法原理
在OJ开发学习的过程中,需要考虑一个代码文件长度的问题,那么能不能用宏定义来大幅度的增加预处理之后的代码长度呢? 一. 第一次实验: #include<stdio.h> #define a bb #define b cc int main() { int a; return 0; } 为什么不是这样呢: 变量a -> bb -> cccc 执行...
2019-09-25 21:33:05
442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅