- 博客(33)
- 收藏
- 关注
原创 C++STL系列之bitset
第一次提到bitset应该是在第一次算法博客上提到,它可以完美的代替bool a[N],bitset到底是什么,我们下面来讲解一下bitset称为位图,bit–比特位,set集合,位图,就是每一位存放一种状态,通常判断某个数据在不在,使用于数据量大,无重复,只关注在不在的数据的情况。当然库里是有bitset的bitset这里放的是位数,比如有bitset<1000 > bt,就是存放1000bit位,想表示10存在,就把10搞成1。布隆过滤器了解,bitset的使用要清楚。
2025-07-30 20:47:51
899
原创 C++STL系列之unordered_set和unordered_map
unordered系列模拟实现的东西比较多,需要掌握,另外,其实哈希还有一个位图 、布隆过滤器就在下次讲了。
2025-07-25 18:17:21
852
原创 数据结构系列之哈希表
第一次接触哈希应该是字符串算法中学到的字符串哈希,,可以快速实现一个字符串在另一个字符串中查找出现次数,O(n + m),他其实是将每一段字符串都映射成了一个值。哈希是一种思想,我们在搜索树中要根据一定的规则来寻找元素,元素和位置没有关系,如果我们能不经过比较,直接O(1)拿到元素的位置,可以实现快速查找,哈希就是这样一种思想,通过哈希函数使元素存储的位置和他之间建立起一一映射的关系,这种思想就是哈希。其中使用的转化元素的函数称为哈希函数,搞出来的结构是哈希表。
2025-07-25 12:50:18
598
原创 数据结构系列之红黑树
首先:红黑树仍然是一颗搜索二叉树,但他引入了颜色这一概念,每个结点多一个存储位来存储颜色,它通过维护下面五条规则来保证,最长路径不超过最短路径的二倍。1.每个结点不是黑颜色就是红颜色2.根节点是黑色3.如果一个节点是红色,则他存在的孩子节点是黑色,换句话说,任意一条路径不存在连续的红色节点。4.对于每个节点,到所有NIL节点的路径上,均含有相同数量的黑色节点。5.每个NIL节点都是黑色的为什么设计第五条规则?看图:这五条规则里最重要的就是三和四,插入也要维护三和四。
2025-07-24 13:27:25
983
原创 数据结构系列之AVL树
AVL树仍然是一颗搜索二叉树,但他和普通的搜索二叉树的区别就是有一条规则:任意结点的左右子树的高度不会超过一,通过这一条规则来维护这颗树相对比较满。这样如果有N个结点,他的高度可维护在logN,插入的复杂度也在O(logN)前面已经讲了是三叉链结构,直接写成KV结构了int bf;:_kv(kv),bf(0){}这里的bf就是平衡因子,balance factor,节点没啥讲的。AVL的旋转是个难点,需要把握好边界,红黑树的旋转和AVL树的旋转类似,所以需要掌握。
2025-07-23 22:32:18
873
原创 数据结构系列之二叉搜索树
binary-search-tree,简称BST(不要叫成SBTree),可以是空树,如果是非空树,满足下列规则:1.如果根结点的左子树存在,那么左子树上的所有结点的键值都比根节点上的键值小。2.如果根结点的右子树存在,那么右子树上的所有结点的键值都比根节点上的键值大。3.左右子树也满足二叉搜索树的规则。二叉搜索树又称二叉排序树,因为它走一个中序遍历拿到的就是升序。这个还是建议要掌握牢的,因为后面的学习建立在这个的基础上。
2025-07-23 15:02:29
818
原创 C++STL系列之priority_queue和仿函数
优先级队列文档优先级队列是堆,可以想象成一颗树形结构,如果是大堆,那么子结点的值都小于等于父结点,优先级队列也是容器适配器,所以没有迭代器。不支持遍历,当然想遍历就需要取top()然后pop()。底层用的是vector,默认情况下建的是大堆,第三个参数就是仿函数,后面讲。本篇内容比较简单,主要会使用就可以,优先级队列的向上调整和向下调整需要掌握,仿函数需要掌握,Top-K问题是一个比较重要的问题,一定要掌握堆方法,其他都不太重点。
2025-07-21 21:10:40
732
原创 C++STL之stack和queue
本次内容主要介绍了反向迭代器和适配器,适配器相对简单,deque虽然比较复杂但是不需要过多了解,知道优缺点即可,反向迭代器是一种很牛的设计,需要记住。
2025-07-20 21:11:06
791
原创 C++STL系列之list
list的迭代器需要掌握,后面的map和set还会用到类似的思想。还需要掌握vector和list的区别,可以从底层,随机访问,插入删除,空间,迭代器等场景来做对比。
2025-07-20 17:55:36
1054
原创 C++STL系列之vector
vector用的也不少,需要多加练习。关于反向迭代器,这个会在stack和queue的那篇博客来讲,因为他们的思想一样明天更新list,stack,queue。
2025-07-19 22:03:11
1046
原创 C++STL系列之概述
STL – 标准模板库(standard template library),涵盖了数据结构和算法,充分体现了C++是一门面向对象的语言,以前在C语言需要自己造轮子,现在使用STL可以更加简单,也隐藏了内部的实现。STL的版本较多,当前主流的版本比如libstdc++,MSVC STL等等,目前Linux系统下使用最为广泛的版本是libstdc++,该版本以 SGI STL 为基础发展而来,参考源代码可以参考这个版本。
2025-07-19 13:11:07
627
原创 C++语法系列之IO流
本次文章应该是语法系列的最后一期文章,后面会进入STL的更新,虽然STL是C++的一部分,但是我觉得他的内容之多和广足以开一个新的栏目叫STL篇,本篇也应该是近几周的最后一篇,因为要开始期末周的复习了。(感觉C++的东西都没有C语言写的多.。。。。
2025-06-04 21:09:54
2324
原创 C++语法系列之特殊类设计
本次内容不难,如果看着很费劲建议去多学学构造函数,拷贝构造函数,普通对象和new出来的对象,new的原理啊等等,这些东西掌握了,以上内容还是很好理解的。
2025-06-03 19:02:56
613
原创 C++语法系列之C++11之超全版
这个很有意思,不知道你们在机房有没有因为写过这个而报错在以前这个>>需要分开,否则会识别成流提取符号。。。。现在可以正常使用写完了。C++11真的更新了好多东西,可能有鸡肋的也有特别有用的,我这篇文章只是C++11的一小部分,希望在我学习的过程中可以逐渐完善。我高三冲刺的时候都没睡过这么晚。。。。。。。。。。。。。。。。。。。
2025-06-02 03:12:24
994
原创 C++语法系列之模板进阶
这集意义不大,模板的可变参数用的也不多,了解了解就行,emplace_back还是很有用的。明天更新C++11,这个东西巨多,《C++ Primer》第五版这本书上描述了巨多新特性,我会通读一下然后讲一下有用的。模板的可变参数和右值都是C++11里面的,已经绕过了这座大山。
2025-06-01 00:03:54
1105
原创 C++语法系列之右值
那先想想什么是左值?----出现在等号左边的一定是左值,出现在等号右边的不一定是左值int p = 5;int a = p;//以上的变量都是左值delete pb;什么是右值?第一种理解,不能被改变的值,因为他无法出现在等号左边(玩一点花活是可以的,详见最后一条,但是通常这么说);第二种理解:是一种数据的表达式,如常量,表达式的返回值等等,如10;x + y;return 1;这里的10,x + y,func()都是右值,有没有左值和右值明显的区分方法?有的兄弟有的。
2025-05-31 15:46:02
2310
原创 C++语法系列之多态(动态绑定)
这里讲解一些小点,真正的大的在后面具体的多态的实现重写其实是更严格的重定义plus:实现虚函数就是为了重写构成多态,所以普通继承就别带virtual了,浪费空间,另外析构函数涉及到父类和子类的析构问题要加virtual去构成多态一天写两个博客累死我了继承和多态的八股文较多,但是考的频率还不低,该背就得背下来!
2025-05-13 00:21:49
1027
原创 C++语法系列之继承
1. 在继承体系中基类和派生类都有独立的作用域。2. 子类和父类中有同名成员,子类成员将屏蔽父类对同名成员的直接访问,这种情况叫隐藏,也叫重定义。(在子类成员函数中,可以使用 基类::基类成员 显示访问)3. 需要注意的是如果是成员函数的隐藏,只需要函数名相同就构成隐藏。4. 注意在实际中在继承体系里面最好不要定义同名的成员。(上面那张图片的第二条就提到了)别自己恶心自己class Apublic:void fun()public:B b;b.fun();
2025-05-12 14:22:25
1228
原创 C++语法系列之前言
这里会输出16,根据规则,w四个字节,c一个,d八个,记住对齐数是和编译器默认的取小,所以w和c正常放进去(w是最开始的放在起点,c的字节数是1,对齐数取小就是1,任何数都是1的倍数,那他接着放在5就可以了),放d的时候,对齐数是8,其他成员变量要对齐到对齐数的整数倍的地址处,所以d起点是8,大小是8,所以最后size是16。你可能会说了,那你问我,有啥区别啊,反正都初始化成功了,那我再问你,看下图。this指针并不存在于对象中!所以,一定别默认一个int类型的变量就是0了,要初始化!
2025-04-30 19:57:58
1021
原创 蓝桥杯竞赛向(C/C++语言)之最后一期真题更新
难绷,本来以为上一期就是最后一期关于蓝桥了,没想到北京地区因为大风拖了两个周,。。。还得折磨我两个周,好想学Linux。。。我就做了一下今年的题目,没想到A组题比B组整体简单,更新一下A组的吧先说一下我的四个小时的答题情况和我感觉的难度1.寻找质数 —开幕雷击,好水的题目,甚至你写个n^2的都能过 简单2.黑白棋 把规则用好,我没跑代码,直接推的,如果不是纯推写代码就废一点劲 建议推导 简单3.抽奖 一个简单的模拟 送分 简单。
2025-04-18 12:25:46
920
原创 蓝桥杯竞赛向(C/C++语言)之DP和图论篇
比如说我有12个价值为1,体积为1的物品,二进制就转化为1个价值1,体积1,1个价值1 * 2,体积1 * 2,1个价值1 * 4,体积1 * 4,发现12 - 1 - 2 - 4 = 5 < 8,最后·就剩了一个价值5,体积5的物品,这样就直接转化为了01背包,非常牛。第三步:初始化,一些已经知道的量 / 题里已经给出的量/需要用它推导下一个状态的量,dp[1] = dp[2] = 1;背包问题是经典的DP问题,主要以01背包,完全背包,多重背包为主。状压DP也很重要,但是本人掌握的并不好就没来讲。
2025-04-08 19:00:19
864
原创 蓝桥杯竞赛向(C/C++语言)之数据结构篇
本次内容是数据结构和例题,这里的数据结构并不是栈 / 堆 / 队列,而是一些较为高级的数据结构(其实并不高级),比如并查集,线段树,单调栈,单调队列,ST表,树状数组等并查集是一种线性数据结构,每个结点最开始指向自己,如果两个结点的根相同就说他们是同一类的,什么是根呢?比如 3 - 2 - 1- 5- 4,3 的根就是4,2的根也是4,相当于一直往下走,走到这个点不能往下走了为止,如果两个结点的根相同,就可以叫他们是同一类的找根操作这种如果结构是一个非常长的链子,查询次数较多效率就非常低下了,可以找到
2025-03-29 20:31:18
904
原创 蓝桥杯竞赛向(C/C++语言)之数论
GCD(最大公约数),LCM(最小公倍数)库里是有GCD这个函数的,可以直接使用也可以自己去写,库里也是这么实现的关于LCM,知道 a * b = gcd(a,b) * lcm(a,b);即可,这样求lcm,用a * b / gcd(a,b) 一定是整数。
2025-03-27 11:29:32
663
1
原创 蓝桥杯竞赛向(C/C++语言)之字符串算法篇
DFS 和 树结合也是常考题目,每年基本上会有关于树问题的题目这个题确实不难,对DFS熟悉的可以轻松码出来longlongunsignedlonglong0x3f3f3f3flonglonglongdoubleint还是跑图题,注意要加记忆化搜索,否则会Tdp数组的意义就是dp[i][j][k]表示用了k次(0/1)次是否能到i,j这个位置这个题和上面那个很像,但是有区别,这个题行走只要不走到墙可以无限转圈,所以要加个vis数组,记得要回溯,不然包错的。
2025-03-25 23:03:39
935
1
原创 蓝桥杯竞赛向(C/C++语言)之博主掌握不太好的算法篇(DFS)
下次一定(也有可能去更新14届蓝桥杯A组真题)//会带一点AC自动机 但是不会讲 因为我不会 蓝桥几乎不会考(看水的字数博主沉淀了几天(回来更新了,估计可能只能讲个搜索了,字符串东西很多,下次讲,主要讲搜索的原因是什么捏,(博主刷了一会题,发现搜索做的真的很不好…需要多刷一点题,本次讲解主要以刷题为主,搜索只有多做才能会。。。
2025-03-23 22:17:03
1386
1
原创 蓝桥杯竞赛向(C/C++语言)之真题讲解(下)
注:因为博主没做出来,所以博主的思路是总结一部分人的思路来的,但绝不会抄袭,都有自己的理解,叠个甲先链接:蓝桥平台上来就是个王炸最开始看到这道题,我还以为很简单,直接暴力,。。。。最后喜提百分之五的正确率,其他TLE了,然后查询了很长时间的解法,唉,很多人的解答感觉只是有个代码,思路并不清晰,我来讲一下思路暴力的思路:找到所有二元组 pair<int,int> p,first % second == 0双层循环枚举二元组 ,去除掉 i == j || k == l,|| i == l || j =
2025-03-17 21:19:15
979
6
原创 蓝桥杯竞赛向(C/C++语言)之真题讲解(上)
博主忙活一天有点累先鸽掉一天算法,先更新一次15届蓝桥杯真题的讲解吧(A组)一道填空 + 六道编程(本次先讲解一道填空 + 三道编程)后几道较长也需要好好讲讲 就分两次了。
2025-03-15 22:31:27
1314
2
原创 蓝桥杯竞赛向(C/C++语言)之简单算法篇
竟然又水了一集下一期开DFS,剪枝,和回溯 和 字符串算法(不要和博主提一些高级算法 听不懂。。。。。
2025-03-13 23:04:15
1262
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人