
C++
chp的博客
这个作者很懒,什么都没留下…
展开
-
AcWing 851. spfa求最短路&&AcWing 852. spfa判断负环—spfa算法
spfa算法是对bellman-ford算法的改进,bellman-ford算法比较笨,要遍历所有边来更新,其实如果当前点没有被更新的话,就不用用当前点来更新他所连接的点了。我们只需要每次更新一个点后,继续更新该点连接的点即可。正如bellman-ford算法中提到的,一个点到其余点的最短路径,最长需要经过n-1条边,所以如果有大于等于n条边,则说明一定有环。注意从单元点出发,有可能找不到环,因为环不一定在最短路径上。原创 2024-01-06 15:29:01 · 591 阅读 · 0 评论 -
AcWing 853. 有边数限制的最短路—bellman-ford算法
优秀的地方,但是要注意的是能解决带负权边的最短路问题,如果负权边构成了负权回路,那就有可能求不出来了。需要注意的是,我们可以把n轮更新,理解为,1号点经过不超过n条边到达其余点的最短距离。bellman-ford算法可以用来解决带负权边的最短路问题,这是相比于。另外我们可以发现,在无环的情况下,1号点到其余点最长需要经过n-1条边。bellman-ford算法的主要思想是做松弛操作,类似于。如果需要要求边数为k,则遍历k轮即可。轮松弛操作,每次遍历。原创 2024-01-06 14:29:31 · 428 阅读 · 0 评论 -
AcWing 107. 超快速排序—逆序对
我们思考冒泡排序在什么情况下会交换两个相邻的数,目标是升序序列时,当f[i]>f[i+1]时,会交换f[i]与f[i+1],交换后可以发现f[i]的逆序对数量减少了一个,所以就能往这方面想,最后可以发现逆序对的数量就是需要交换的最少次数。,但是主要是如何分析问题,如何能从问题中看出来和逆序对数量有关,现在的题目基本上很少是那种模板算法题了,更注重思维,所以一定要培养好思维,模板只是基础。思维很重要,或者说在熟知算法模板的情况下,更重要的就是思维了。这道题考查的算法不难,就只是利用。原创 2023-07-14 16:14:00 · 478 阅读 · 0 评论 -
AcWing 1273. 天才的记忆—RMQ
举个例子,比如区间[1,5]长度为6,那么k=2小区间的长度为4,第一个小区间是为[1,4],第二个小区间为[3,6],这两个小区间刚好完全覆盖大区间[1,5],所以在这两个小区间中取一个max,就得到了大区间的max,这样就能在。是用来求解静态区间最大/小值的算法,静态空间就是数组里的数不会变,动态空间最大/小值可以用。我们可以将这个区间分成两小,第一个小区间是从l开始,长度为。来求这个区间的最大值呢,因为这个区间长度也不一定是。,下面讲解一下这个算法步骤,做过。,第二个区间是从r结束,长度为。原创 2023-07-13 20:42:27 · 251 阅读 · 0 评论 -
状态压缩DP—最短Hamilton路径
【代码】状态压缩DP—最短Hamilton路径。原创 2023-06-26 11:27:13 · 193 阅读 · 0 评论 -
状态压缩DP—蒙德里安的梦想
【代码】状态压缩DP—蒙德里安的梦想。原创 2023-06-25 15:44:21 · 149 阅读 · 0 评论 -
数位DP—计数问题
【代码】数位DP—计数问题。原创 2023-06-23 16:22:14 · 133 阅读 · 0 评论 -
线性DP—最短编辑距离&编辑距离
这道题可以用线性DP来求解,线性DP的特点是每次只需要考虑最后一个状态。原创 2023-06-10 14:10:59 · 78 阅读 · 0 评论 -
线性筛法求欧拉函数
的,大概率是过不了上面的问题,这里我们考虑用线性筛来求欧拉函数。如果用筛质数的方法,单独求某个数的欧拉函数,时间复杂度应该是。关于线性筛可以看我的。原创 2023-06-05 19:31:26 · 107 阅读 · 0 评论 -
C++中char、short、int、long、long long的取值范围以及对变量赋值超过其范围时的处理
C++中char、short、int、long、long long的取值范围以及对变量赋值超过其范围时的处理。原创 2022-11-21 16:20:01 · 4088 阅读 · 0 评论