- 博客(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
264
原创 欧几里德定理
欧几里德定理欧几里德定理是用来求两个数的最大公因数的。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
901
原创 字符串哈希值
字符串哈希值使用另一种进制来表示字符串,在该进制表示下的字符串的值即为哈希值。包含小写字母的字符串,只有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
811
原创 积性函数
积性函数定理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
292
原创 快速傅里叶变换(FFT)(未完)
快速傅立叶变换(FFT)FFT的里有许多地方我也搞不懂,我不想懂也不需要懂,知道结论能用就行了。。。看了好多天的鬼东西,本来觉得好难,看完之后觉得也不过如此。快速傅立叶变换FFT,是一种用来加速多项式相乘(卷积)的算法O(n*logn)。离散傅里叶变换DFT: 传统暴力方式下实现多项式相乘O()。对于一个多项式:F(x) = + + +.......+, 当x...
2020-03-11 10:40:46
224
原创 蒟蒻的莫比乌斯反演学习笔记
有一个算术函数函数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
116
原创 线性筛
线性筛Start.线性筛它是用来筛选出1-n之内的素数,它的时间复杂接近于O(n)。它的大致过程是:使用一个长度为 n 的bool数组,刚开始都是未被标记的,从2开始找,将所有合数标记为true(筛选掉合数),没有被标记的就是素数。而筛选合数的核心思想就是:所有合数都将被它的最小质因子筛掉。细节:有一个知识点,对于所有的合数,它的最小质因子是唯一的,所以每个合数都有唯一的这样的...
2020-03-11 10:40:15
375
原创 王爽汇编实验12
assume cs:codecode 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
219
原创 王爽汇编实验9
assume ds:data,cs:codedata segment db 'welcome to masm!'data endsdata2 segment db 2h,24h,71hdata2 endscode segment start: mov ax,0b800h mov ds,ax mov bx,0 ...
2020-02-12 16:15:52
164
原创 红黑树
红黑树说难不难,说简单不简单,我去看别人写的红黑树教学,是真的看不懂,于是自己想办法,实现了。红黑树性质:性质1. 节点是红色或黑色。性质2. 根节点是黑色。性质3 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质4. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。插入:插入的节点是红色节点,当插入节点的父亲节点是...
2020-01-08 16:12:31
547
原创 Treap树
Treap是真的简单。为了打破类似单调数列插入BST,使树退化为链表的情况,将数据打乱成随机出现的,是个好办法,然而并不是什么时候都适用。树上节点的出现顺序是不可修改的,而Treap则为每个节点新增加一个随机变量,将矛盾转移到这个随机变量上,使得对节点进行比较的时候,具有随机性,从而使得插入,删除等操作的复杂度期望为O(logn)。Treap性质:...
2020-01-07 23:33:40
241
原创 AVL树
最古老的平衡二叉树。AVL树性质:1.左右子树高度差不超过1.复杂度:插入O(logn),最多做两次旋转,若干次维护树高。删除O(logn),最坏情况做logn次平衡。旋转操作插入:与BST一样,小于当前节点往左子树,大于往有子树。回溯时平衡树高。删除:递归查找到目标值的节点,1.如果目标节点是单链节点(只有一个儿子),或没有儿子的节点,则就地删除,用空...
2020-01-07 23:06:05
409
原创 OJ系统判题思路与代码实现
OJ系统判题思路与代码实现毕业设计做了个OJ系统,做得不好,打算重做,因为比较感兴趣,涉及到了许多东西,做系统的同时又把我在学校里学的东西给捡了回来,哈哈。输入:exeFile:源程序文件codeType:代码类型test.in:输入文件test.out:输出文件timeLimit:时间限制me...
2019-10-22 01:08:37
6441
8
原创 探究C/C++宏定义的算法原理
在OJ开发学习的过程中,需要考虑一个代码文件长度的问题,那么能不能用宏定义来大幅度的增加预处理之后的代码长度呢?一. 第一次实验:#include<stdio.h>#define a bb#define b ccint main(){ int a; return 0;}为什么不是这样呢: 变量a -> bb -> cccc执行...
2019-09-25 21:33:05
373
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人