- 博客(11)
- 收藏
- 关注
原创 快排用随机数的错误
作为枢轴值进行分区,但没有将枢轴值移动到一个固定位置(如左端点或右端点)。// 找到第一个大于等于枢轴值的元素。// 找到第一个小于等于枢轴值的元素。// 交换这两个元素。// 将随机选择的枢轴值交换到左端点。// 使用左端点的值作为枢轴值。通过将枢轴值交换到左端点,简化了分区逻辑。的值在分区过程中可能会被交换,导致分区逻辑混乱。
2025-05-11 17:50:34
369
原创 快排数据更新怎么过看这里
当给定的序列有序时,如果每次选择区间左端点进行划分,每次会将区间[L, R]划分成[L, L]和[L + 1, R],那么相当于每次递归右半部分的区间长度只会减少1,所以就需要递归 n−1次了,时间复杂度会达到 n2。但每次选择区间中点或者随机值时,划分的两个子区间长度会比较均匀,那么期望只会递归𝑙𝑜𝑔。//也可以换成NULL;快速排序过程中,如果每次取区间起点或者终点作为分界点,则会超时。,使得结果落在闭区间 [l,r] 内。分界点换成随机值,或者区间中点即可。
2025-05-11 17:22:33
311
原创 错题记录——蓝桥杯真题数的诗意——学会了用位运算判断是否为2的次幂
int n;cin>>n;i<n;++i){cin>>x;//}return=0;
2025-04-10 21:11:42
174
原创 错题记录——数学填空题(本质考找最小公倍数)
这个规律适用于任意两个正整数 a 和 b,只要它们的最小公倍数存在。最小公倍数 L 是 a 和 b 的倍数序列的“重合点”,之后的序列会周期性地重复。
2025-04-10 20:33:29
880
原创 常用数学计算c++
假设我们已经将第 个元素放在了第 个位置上(),那么我们有 个选择(因为第 个元素不能放在第 个位置上)。2. 不包含元素 的组合:如果组合中不包含元素 ,那么我们只需要从剩下的 个元素中选择 个元素。这样,我们剩下 个元素需要错排,因为第 个元素和第 个元素已经固定。1. 包含元素 的组合:如果组合中包含元素 ,那么我们只需要从剩下的 个元素中选择 个元素。因此,从 个元素中选择 个元素的总组合数 等于包含元素 的组合数 加上不包含元素 的组合数。
2025-04-10 19:26:41
252
原创 有关年份的计算——蓝桥真题
由于题目给定了2022年1月1日是星期六,因此可以直接进行枚举,否则需要借助相关工具。也就是说,我们需要枚举2022年的每一天,并判断,是否是以上条件之一。可以通过Excel表的日期进行转换得到第一天的星期,后续进行推算。一般来说,蓝桥杯的日期题贴近现实,按照上述规则记忆即可。月份日期表可以很容易得到,一个很简单的方式就是数手指头。解决了以上问题,则可以通过循环枚举每一天。
2025-04-07 07:53:45
324
原创 计算两个数的平方差——高精度减法乘法加法
/ a代表整数的绝对值,lena代表长度,f_a代表符号,如果是1,代表负数/*** 判断a是否大于等于b,如果成立,返回1,否则返回0* a 存储a整数的数组* lena a整数的长度*/if (lena!i >= 0;/*** 计算出 a - b,并且放在c中,保证 a >= b* 返回c的长度*/i < lenc;++i) {
2025-04-07 07:42:44
1039
原创 10进制转N进制
int _10_to_n(int x, int n, int a[])//命名只能用下划线和字母开头;//a[]为转换后的存储空间,逆序存储;输出时需要倒着输出;//x为十进制整数;
2025-04-07 06:37:00
126
原创 N进制转10进制
每次循环将当前结果 res 乘以进制 n(相当于提升到更高位权),再加上当前位的值 a[i]。• res = res * n → 将已处理的低位部分左移一位(权值乘以 n)。注意:a[]数组是从高位到底位;例如2025:a[3]={2,0,2,5。• res = res + a[i] → 加入当前位的值。1. 初始值:res = 0(即 n^0 的系数)。
2025-04-07 06:21:39
386
原创 最大公约数(ST表的使用(倍增))---蓝桥杯真题
/下面这个是没有出现1的情况(即整个区间本身就没有1而且怎么整合也整不出一个1);:将生成的 1 扩展到整个数组所需的操作次数。因为每次操作可以将一个元素变成 1,直到所有元素都变成 1,这需要。代码的最后两步是关键的逻辑部分,用于计算将整个数组变成全 1 的最少操作次数。:生成一个 1 所需的操作次数。只会记录最后一个找到的区间长度,而不是所有可能区间中的最小值。这一步的目的是找到生成一个 1 所需的最小区间长度。:记录所有可能区间中生成 1 所需的最小区间长度。(生成 1 的最小区间长度减 1)。
2025-04-03 00:44:02
891
原创 二分——实数二分(c++)
会发现while循环里的代码新手在自己写的时候会遇到我注释的问题那么就要用下列二分查找的模板会更加清晰(声明上面的代码写是对的但是不利新手理解,改成下面的)if (arr[mid] == target)//这里就是把mid==目标值的情况的单独拿出了,所以下面l=mid+1,r=mid-1;//首先本题答案肯定存在(由题目知道的),l=mid,而不是mid+1,就已经包含mid=a这种情况;// 目标在左半部分。// 目标在右半部分。return mid;//写到这里会有疑问mid=a这种情况怎么考虑。
2025-03-31 23:27:41
425
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅