C++高级数据结构
文章平均质量分 96
详细讲解C++的各种进阶数据结构,如线段树,树状数组等
logn_sort
百尺高城不足凭
度香桥下听溪声
吃到憎时始忆渠
枣实虽红休北雇
药鼎青荧败叶烧
丸中久矣和乾圜
展开
-
【数据结构】并查集
情景引入之踢馆风云 有10位武林高手,姑且称之为[1]号到[10]号高手。他们分别创建了各自的武馆,各自悬挂1号到10号牌,我们就分别称之为1号到10号 第1天,1号高手跑去2号武馆踢馆,挑战方胜利,踢馆成功以后,2号高手的2号武馆就变成了1号高手的1号武馆的分馆,所以需要摘掉2号牌,改为悬挂1号高手的1字牌。原创 2023-07-02 16:05:17 · 435 阅读 · 1 评论 -
【数据结构】树状数组
都说树状数组思路很难,那我们今天就给他讲个透彻!lowbit运算lowbit的作用就是返回一个数从右往左数的第一个1与他前面所有的0所组成的十进制数114这个数转换为二进制为1110010,而它从右往左数的第一个1在第二位,将这位右边的所有0放出来为10,转换为十进制为2,所以返回2。lowbit。原创 2023-05-31 13:15:51 · 446 阅读 · 1 评论 -
【数据结构】线段树
例题1:给定一个正整数数列a1a2an,每一个数都在0∼p−1之间。n1L程序运行的最开始,整数序列为空。一共要对整数序列进行m次操作。写一个程序,读入操作的序列,并输出询问操作的答案。1≤m≤2×1051≤p≤2×1090≤tp数据范围明目张胆告诉我们会tle。这道题目就可以用我们今天要学的线段树来解决。原创 2023-05-27 17:01:28 · 404 阅读 · 1 评论 -
【数据结构】分块
分块本质上就是一个优化的暴力算法,它的思路通俗易懂,虽然时间复杂度不及那些高级数据结构,但仔细想想,线段树和树状数组处理每一步的时的效率为$\log n$,分块的效率则为$\sqrt n$,显然$\sqrt n$比$\log n$要处理的次数多上不少,但也是属于能过的状态,况且线段树因为巨大的常数有时还不如分块。原创 2023-05-09 10:01:33 · 509 阅读 · 0 评论