相关知识
文章平均质量分 85
君义_noip
五道口职业技术学院毕业
信息学奥赛教练
小说作者
展开
-
数学取模相关概念
(当b为long long类型时,需要自己写求long long类型绝对值的函数)。C++/Java/C#/JavaScript中,整除商为实数商向0取整。,由于数学中余数不能为负,所以将等式调整为余数大于等于0。数学中(以及python中),整除商为实数商向下取整。综合以上所有情况,在各种情况下都满足。因此两种整除定义下的余数不同。数学中的余数一定是非负整数。该式叫做带余除法,记余数。商向0取整,则除法等式为。,mod为数学取余运算。数学中整除及余数的定义。,%为C++取模运算。商向下取整,除法等式为。原创 2024-06-18 12:42:19 · 1132 阅读 · 0 评论 -
随机生成序列的某一排列
随机生成1~n的某一排列,要求生成每种可能的排列的概率相同。中的随机某元素交换,最后a数组即为随机生成的某一排列。对于任意给定的排列,按照上述算法得到该排列的概率都是。第1次交换,在第1~n个数中选择。第2次交换,在第2~n个数中选择。第n次交换,在第n~n个数中选择。给定数值分别为1~n的序列a,循环变量i从1到n,每次循环将。原序列a,每个元素的值分别为。根据乘法原理,生成排列。原创 2024-05-29 17:43:25 · 929 阅读 · 0 评论 -
证明:每次循环执行i = (i-1)&s可以枚举s表示集合的所有非空子集i
状态压缩:使用二进制数表示一个集合的情况,第i位为1表示第i元素在集合中,为0表示不在集合中。已知i表示的集合是s表示的集合的子集,枚举s的所有子集i可以写为。原创 2024-04-23 00:22:40 · 500 阅读 · 0 评论 -
线段树相关概念证明
设该线段树根结点表示区间长度为k,k一定是奇数,左子树区间长度。的满二叉树,顺序存储结构需要的空间为高度为。因此表示线段树的数组长度一般设为4N。综上,区间长度为n的线段树的高度为。所以高为h的满二叉树的结点数为。,线段树结点最多时为高度为。高为h的满二叉树的结点数为。对于线段树中任何分支结点。因此右子树是满二叉树。,这与上述情况相悖。的满二叉树的结点数。原创 2024-03-01 02:11:06 · 1063 阅读 · 0 评论 -
证明:如果一个字符串的最小循环节是不完全循环节,那么该字符串没有完全循环节
s[i]或sis_isi表示字符串的第i个字符,从0开始。使用python切片写法表示字符串的子串s[x:y]表示字符串s下标范围为左闭右开区间[x, y)中的字符s[:y]等价于s[0:y]s[x:]等价于s[x:n]循环节:若某个字符串是由某个子串循环多次构成的,那么就称该子串为原串的循环节。(本文中循环节循环次数满足大于1次)sisikTsisikT,k是整数。完全循环节:字符串由若干完整的循环节构成,这样的循环节叫完全循环节。原创 2023-12-28 16:07:37 · 1233 阅读 · 0 评论 -
有n个结点的平衡二叉树的最小、最大深度,及深度的数量级
如果原树的深度为h,其两棵子树中一定有一棵子树深度为h-1,那么删掉根结点和另一棵子树,保留深度为h-1的子树,即可以在删掉一些结点后,得到一棵深度为h-1的平衡二叉树。显然,n个结点的平衡二叉树深度最小时,前h-1层是满的,只有最下面一层不满。第一个满足大于n+1的斐波那契数,这个数是斐波那契数列的第i项,那么n个结点构成的平衡二叉树的最大深度为i-3。即平衡二叉树深度h越小,构建深度为h的平衡二叉树需要用到的最少结点数目越少。要想使深度为h的平衡二叉树的结点最少,那么它的左右子树一定结点最少。原创 2022-12-09 17:13:04 · 8102 阅读 · 0 评论 -
公式求k进制下整数的位数
k进制下整数n的位数为:⌊logkn⌋+1\lfloor log_kn \rfloor + 1⌊logkn⌋+1证明:如果整数n在k进制下有x位,那么一定有kx−1≤n<kxk^{x-1}\le n < k^xkx−1≤n<kx所以有x−1≤logknx-1 \le log_k{n}x−1≤logkn,与x>logknx > log_k{n}x>logkn即logkn<x≤logkn+1log_kn<x\le log_kn+1logkn<原创 2022-05-07 22:22:00 · 356 阅读 · 0 评论 -
【君义精讲】排序算法
一、概念1. 排序的定义一般定义:将一组无序的数据元素调整为有序的数据元素。数学定义:假设含n个数据元素的序列为R1,R2,...,Rn{R_1,R_2,...,R_n}R1,R2,...,Rn,其相应的关键字序列为K1,K2,...,Kn{K_1,K_2,...,K_n}K1,K2,...,Kn,这些关键字相互之间可以进行比较,即在它们之间存在这样的关系:Kp1≤Kp2≤...≤KpnK_{p1}\le K_{p2}\le...\le K_{pn}Kp1≤Kp2≤...≤Kpn,按原创 2022-03-23 00:07:25 · 2083 阅读 · 0 评论 -
【君义精讲】高精度计算
一、概念1. 高精度计算高精度计算是指参与运算的数的范围大大超出了标准数据类型能表示的范围的运算。如100位数字和100位数字的加减乘除运算。为处理高精度计算,我们使用数字数组来表示高精度数字。2. 数字数组数字数组:第0位置保存数字位数,而后从低位到高位保存各位数字,每个数组元素保存一位数字。下标012345…含义位数个位十位百位千位万位…例:数字12345用数字数组表示为下标012345数值5543原创 2022-02-07 13:12:15 · 3783 阅读 · 1 评论 -
【君义精讲】多种方法求斐波那契数列
概念斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)在C++中可以有多种方法求斐波那契数列问题描述菲波那契数列是指这样的数列: 数列的第一个和第二个数都原创 2022-02-01 14:34:16 · 1866 阅读 · 3 评论 -
二分查找最大比较次数证明
结论对n个元素进行二分查找,最大比较次数为:⌊log2n⌋+1\lfloor log_2n \rfloor +1⌊log2n⌋+1问题给定升序数组,各元素不同,查找某元素。如果该元素存在:输出该元素的下标如果不存在该元素,输出-1算法思路:对于有序数列(从小到大),设定左端l(最小元素下标)和右端r(最大元素下标)当满足条件l <= r时,求中点m,将中点元素的值与所要查找的值比较若中点元素值比所要查找元素小,则应找后半段,所以l = m+1,否则应找前半段r = m - 1重原创 2022-01-23 00:33:51 · 7880 阅读 · 4 评论 -
满二叉树及完全二叉树的相关性质证明
高为h的满二叉树的结点数为:2h−12^h-12h−1各层结点数为20,21,...,2h−12^0,2^1,...,2^{h-1}20,21,...,2h−1根据等比序列求和公式,可得到总结点数:s=1(1−2h)/(1−2)=2h−1s=1(1-2^h)/(1-2) = 2^h-1s=1(1−2h)/(1−2)=2h−1高为h的完全二叉树的结点数范围为:[2h−1,2h−1][2^{h-1},2^h-1][2h−1,2h−1]结点最少情况为:h-1层满二叉树加1个结点。结点最多情况为:h层满二.原创 2021-09-04 17:50:10 · 860 阅读 · 0 评论