摘要: 引入 编辑距离(Edit Distance),又称$Levenshtein$距离,是指两个字串之间,由一个转成另一个所需的编辑操作次数。最小编辑距离,是指所需最小的编辑操作次数。 编辑操作包含:插入、删除和替换三种操作。 插入:在某个位置插入一个字符 删除:删除某个位置的字符 替换:把某个位置的字符 阅读全文
posted @ 2022-02-24 17:17 蔚蓝-星辰 阅读(801) 评论(0) 推荐(0)
摘要: 经典算法 求解$LCS$(最长公共子序列)时,一般采用动态规划的方法。 例:有$strn$与$strm$两个序列,设$DP$方程$f[i][j]$表示$strn$的前$i$位与$strm$的前$j$位的LCS长度,转移方程如下:\(strn[i]==strm[j]:f[i][j]=f[i-1][j- 阅读全文
posted @ 2022-02-24 12:00 蔚蓝-星辰 阅读(975) 评论(0) 推荐(0)
摘要: 洛谷P1280尼克的任务 题目描述:尼克的一个工作日为$n$分钟,从第1分钟开始到第$n$分钟结束。当尼克到达单位后他就开始干活,公司一共有 \(k\) 个任务需要完成。如果在同一时刻有多个任务需要完成,尼克可以任选其中的一个来做,而其余的则由他的同事完成,反之如果只有一个任务,则该任务必需由尼克去 阅读全文
posted @ 2021-12-11 20:55 蔚蓝-星辰 阅读(77) 评论(0) 推荐(0)
摘要: 1.构造函数的优势 众所周知,在结构体内部可以定义变量、函数等,但结构体内部的变量有一个特点:无法被初始化。因此我们需要初始化变量时可以通过函数实现。 struct student{ string name; int score; void pre(){ name="Tom"; score=4; } 阅读全文
posted @ 2021-10-31 23:38 蔚蓝-星辰 阅读(3719) 评论(0) 推荐(2)
摘要: 浅谈结构体内重载运算符 1.重载运算符的作用 对结构体类型的变量使用重载后的运算符代替成员函数完成一系列任务。当然,我们可以使用成员函数直接完成这些任务,但使用起来没有重载运算符后美观直接。 举个直观的例子:在实现高精度加减法时,如果你能直接用$c=a+b$表示高精度加法,是不是比$c=add(a, 阅读全文
posted @ 2021-10-31 23:37 蔚蓝-星辰 阅读(605) 评论(0) 推荐(1)
摘要: 求最大公约数算法介绍 1.更相减损术 算法原理:欲求$a$和$b$的最大公约数,设$gcd(a,b)$为$m$,故$a$是$m$的倍数,$b$是$m$的倍数,则$a-b$自然也是$m$的倍数,故有$$gcd(a,b)=gcd(b,a-b)(假定a>b)$$ 当$b$变为0,则$a$便是我们所需求解的 阅读全文
posted @ 2021-10-30 20:35 蔚蓝-星辰 阅读(506) 评论(0) 推荐(0)
摘要: 树状数组基础用法 阅读全文
posted @ 2021-10-30 19:54 蔚蓝-星辰 阅读(98) 评论(0) 推荐(0)
摘要: Miller–Rabin素数判断法是一种时间复杂度较优的算法,期望时间复杂度为O(logN)。但本身是一种不确定算法,存在误把合数判断为质数的可能。 算法原理介绍: 因此,对一个即将被判断的数n,判断步骤如下。 先用定理1进行判断,即判断是否成立。 如上式不成立,则n必不是质数,判断完毕。 如上式成 阅读全文
posted @ 2021-10-24 20:22 蔚蓝-星辰 阅读(189) 评论(0) 推荐(0)
摘要: 算法介绍:欧拉筛法是在O(N)线性时间内实现素数筛选的优秀算法。 算法思路:总体上与Eratosthenes筛法类似,也是用较小的数筛去较大的合数。 关键思路在于:每一个合数都保证是被其最小的质因子筛去的,下简称称该条件为线性条件。 结合代码分析: inline void Euler_Sieve() 阅读全文
posted @ 2021-10-24 18:20 蔚蓝-星辰 阅读(1330) 评论(0) 推荐(0)
摘要: 对于一维数组a[i](a[i]类型不为char),a表示数组的首地址,即a=&a[0]。 int a[10]; cout<<a<<endl; cout<<&a[0]<<endl;//两者相同,都表示数组a的首地址。 cout<<*a<<endl; cout<<a[0]<<endl;//两者相同,都表 阅读全文
posted @ 2021-10-24 16:29 蔚蓝-星辰 阅读(728) 评论(0) 推荐(0)