c++笔记
文章平均质量分 68
kobe_zlx
这个作者很懒,什么都没留下…
展开
-
c++二分答案快捷函数
原创 2024-04-21 16:21:07 · 65 阅读 · 1 评论 -
c++排序
【代码】c++排序。原创 2024-04-14 15:04:46 · 73 阅读 · 0 评论 -
C++笔记5
如果 du==dis[u],遍历 u 能到达的所有节点 v,假设 u−>v 的边权为 c,比较 dis[v] 和 dis[u]+c 的大小,如果 dis[v]>dis[u]+c ,令 dis[v]=dis[u]+c,并把 (v,dis[v]) 放入优先队列。这里用到了动态规划的思想,依次求 p[1],p[2],p[3]...p[n] 的值,在要求解 p[i] 时,之前的 p[] 值已经得到了,我们就可以利用回文串的性质和之前的 p[] 值来对求解 p[i] 的过程进行优化。原创 2024-02-01 20:23:47 · 790 阅读 · 1 评论 -
c++笔记4
第一次合并大的集合和绿色这个点,之后查询红点,红点路径的长度为O(log(n)),所以查询一次的复杂度为O(log(n)),而路径压缩之后整棵树又变成左下角的结构,如果再一次和一个绿点合并之后再查询红点,复杂度还是O(log(n))的,这就导致产生一个循环,用这样的合并和查询就可能导致不按秩合并的并查集的复杂度降到O(nlog(n))。我们不需要做任何的预处理,每次查询的时候,我们从2个节点分别向他们的根结点走,如果最终根节点是同一个,则表明两个节点在同一棵树中,否则是不同的两棵树。原创 2024-02-01 20:16:16 · 834 阅读 · 1 评论 -
c++笔记3
我们在之前的课程中曾经提到过记忆化搜索,记忆化搜索就是在搜索时记录一些有用的答案, 我们递归的本质就是在搜索答案,但是有些问题会被重复的搜索,所以我们就可以用空间换时间的思想, 将被搜索的问题的答案记录下来, 当下一次再被搜索到这个问题的时候, 就可以在。单调队列,即单调递减或单调递增的队列。根据记忆化搜索的思想,它是解决重复计算,而不是重复生成,也就是说,这些搜索必须是在搜索扩展路径的过程中分步计算的题目,也就是“搜索答案与路径相关”的题目,而不能是搜索一个路径之后才能进行计算的题目,必须要分步计算。原创 2024-02-01 19:55:18 · 1293 阅读 · 1 评论 -
c++笔记2
栈stack的基本操作在C++的标准库中, 有封装好的栈stack,stack是一个模板类,定义stack的示例代码如下:stack<类型> 对象:stack<int> s;一种常见的数据结构,遵循后进先出,先进后出的原则。有一个连续的内存区域组成,栈顶(top)线性表允许插入和删除的那一段。值得注意的是,栈顶指针top的指向是有些两种方式的,一种是指向栈顶当前元素,一种是指向栈顶的下一位置。两种指向方式对栈的操作影响不大,只是在判断栈顶位置的时候略原创 2024-02-01 08:22:31 · 1287 阅读 · 1 评论 -
c++笔记1
标准库中的 sort 是使用快速排序实现的,快速排序是一种非稳定排序,如果我们的比较函数只比较结构体的某一个值,则原有的顺序可能会被打乱,这点在我们写代码的时候要特别注意,有可能因为顺序问题造成计算结果的错误。需要做特殊的处理,可以在结构体中增加一个属性,专门用来记录在原始数组中的位置,在其它值相等的情况下,再比较这个位置数据,这相当于没有两个值是完全相等的,这种情况下稳定排序的结果与非稳定排序是相同的。同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。原创 2024-02-01 08:17:50 · 729 阅读 · 1 评论