- 博客(77)
- 收藏
- 关注
原创 【C++ 基础知识】__attribute__((constructor)) 和 __attribute__((destructor))
2:只有constructor有优先级,指定优先级时,先执行优先级小的,再执行优先级大的,最后执行没有指定优先级。0-100是保留优先级。给编译器提供上下文,帮助编译器做优化,合理使用可以收到显著的优化效果。((constructor)) 先于main()函数调用,((destructor)) 在main()函数后调用。给代码阅读者提供必要的注解,助其理解代码意图。产生一些编译警告,使代码更规范。
2022-08-22 00:21:50
1242
原创 【算法总结】十大排序对比及实现(C++)
⽤两个游标 i 和 j,分别指向 A[p…r] 的第⼀个元素。⽐较这两个元素 A[i] 和 A[j],如果 A[i]
2022-08-09 13:11:39
455
原创 【ACWing 算法基础】堆(堆排序、数组模拟堆)
如何手写堆?堆排序中如何将数组构造成堆中?如何理解模拟堆中的heap_swap,hp[N], ph[N]?
2022-08-03 01:30:12
409
原创 【ACWing 算法基础】KMP
将暴力的O(N*N)降为了O(N)解题方法先写匹配的部分,再写next数组的部分,思路一样的next,for内部(i=1,j=0)1.匹配不成功则一直回退,直到j=0时没有办法2.回退之后,匹配成功,j++模式串向前推进3.判断j==m,看是否比较完next,for内部(i=2,j=0)将s换为p1.匹配不成功则一直回退,直到j=0时没有办法2.回退之后,匹配成功,j++模式串向前推进。.........
2022-08-02 16:59:25
431
原创 【ACWing 算法基础】单调队列
解析动画解题思路解决队首已经出窗口的问题;解决队尾与当前元素a[i]不满足单调性的问题;将当前元素下标加入队尾;如果满足条件则输出结果;
2022-08-01 16:25:49
280
原创 【ACWing 算法基础】单调栈
Q为什么要保持栈内元素大小的单调递增特性?由于栈内元素是递增的,所以比较次数一定是最少的,这就实现了优化。Q如何保持栈内元素大小的递增性?在依次出栈比较栈顶元素和当前数组元素大小的时候,如果栈顶元素小,那么找到目标值,将当前数组元素入栈,这样保持了栈内元素大小的递增性;如果栈顶元素大,那么栈顶指针左移,直到找到目标值,再将当前数组元素入栈,这样就保持了栈内元素大小的递增性。我们不必在意这个过程破坏了栈的结构,因为之前的数已经找到之前数组元素对应的目标值了。......
2022-08-01 14:23:03
292
原创 【ACWing 算法基础】离散化
为什么要离散化呢?因为存储的下标实在太大了,如果直接开这么大的数组,根本不现实,第二个原因,本文是数轴,要是采用下标的话,可能存在负值,所以也不能,所以有人可能会提出用哈希表,哈希表可以吗?离散化的本质,是映射,将间隔很大的点,映射到相邻的数组元素中。减少对空间的需求,也减少计算量。......
2022-07-30 16:14:01
418
原创 【ACWing 算法基础】位运算
你可以取个例子,10…0=x+(~x)+1.其实x+(~x)=11…1(32位全为1,再加上个1,才能变成10…共一行,包含n个整数,其中的第i个数表示数列中的第i个数的二进制表示中1的个数。给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。第二行包含n个整数,表示整个数列。0≤数列中元素的值≤109。第一行包含整数n。...
2022-07-30 11:59:27
186
原创 【工具配置篇】 Linux 下解决 QtCreator 中无法使用 fcitx5 输入法的问题
QtCreator 中无法使用 fcitx5 输入法
2022-07-30 01:27:33
1184
1
原创 【ACWing 算法基础】前缀和
795.前缀和796.子矩阵的和输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数n,m,q。接下来n行,每行包含m个整数,表示整数矩阵。接下来q行,每行包含四个整数x1,y1,x2,y2,表示一组询问。输出格式共q行,每行输出一个询问的结果。数据范围1≤x1≤x2≤n,−1000≤矩阵内元素的值≤1000。...
2022-07-29 10:03:28
212
原创 【Effective C++】比较 pass-by-value 与 pass-by-referrence
在某些编译器上传递指针的开销比引用大,因为编译器需要保证子类空指针转换成父类指针时还是空指针,从而不得不先判断指针是否为空,如果为空则传0否则加一个偏移量后传递。而引用,在语义上不应该存在“空引用”,所以部分编译器在传递引用时可以不执行这个判断而直接传递加偏移量后的结果。因为使用内置类型时,数据是直接放在栈上或者寄存器里,直接调用就可以了;但是使用例如类这种复杂的传递,开销会更大,会使用引用传递。而使用指针或者引用,得做一次取地址操作才能得到值。...
2022-07-28 17:31:07
180
原创 【ACWing 算法基础】高精度除以低精度
二. 例题794. 高精度除法给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。输入格式共两行,第一行包含整数 A,第二行包含整数 B。输出格式共两行,第一行输出所求的商,第二行输出所求余数。数据范围1≤A的长度≤100000 ,1≤B≤10000,B 一定不为 0输入样例:72输出样例:31AC代码:...
2022-07-28 16:07:50
237
原创 【ACWing 算法基础】高精度乘低精度
给定两个非负整数(不含前导0)A和B,请你计算A×B的值。共两行,第一行包含整数A,第二行包含整数B。共一行,包含A×B的值。1≤A的长度≤100000,
2022-07-28 15:41:44
246
原创 【ACWing 算法基础】高精度减法
二. 例题792. 高精度减法给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的差。数据范围1≤整数长度≤105输入样例:3211输出样例:21AC代码:......
2022-07-28 15:14:23
225
原创 【ACWing 算法基础】高精度加法
给定两个正整数(不含前导0),计算它们的和。共两行,每行包含一个整数。1≤整数长度≤100000。共一行,包含所求的和。
2022-07-28 14:33:24
188
原创 【ACWing 算法基础】逆序对的数量
逆序对的定义如下对于数列的第i个和第j个元素,如果满足ia[j],则其为一个逆序对;给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。数列中的元素的取值范围[1,109]。第二行包含n个整数,表示整个数列。第一行包含整数n,表示数列的长度。输出一个整数,表示逆序对的个数。......
2022-07-28 11:33:11
258
原创 【ACWing 算法基础】二分查找
二分查找的核心思想->分治既然是分治,遵循以下步骤分解成子问题;递归处理子问题;合并子问题;二分的本质->二段性红色区间的那个点(左边界)即是序列中最后一个满足某条件(红色条件)的元素绿色区间的那个点(右边界)即是序列中第一个不满足某条件(红色条件)的元素当然,绿色区间的点也可以认为是第一个满足某条件(绿色条件)的元素详细分析。......
2022-07-28 10:16:05
256
原创 【ACWing 算法基础】归并排序
归并排序的核心思想->分治既然是分治,遵循以下步骤分解成子问题;递归处理子问题;合并子问题;方法边界注意事项分治算法最怕的就是n分成0和n,或n分成n和0,这会造成无限划分各种问题的详细分析。...
2022-07-28 07:54:45
281
原创 【ACWing 算法基础】第 k 个数
给定一个长度为n的整数数列,以及一个整数k,请用快速选择算法求出数列从小到大排序后的第k个数。第二行包含n个整数(所有整数均在1∼109范围内),表示整数数列。输出一个整数,表示数列的第k小数。第一行包含两个整数n和k。............
2022-07-28 00:26:18
246
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人