自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 双向广搜解决八数码问题

双向广搜:所谓双向搜索指的是搜索沿两个方向同时进行:正向搜索:从初始结点向目标结点方向搜索;逆向搜索:从目标结点向初始结点方向搜索;当两个方向的搜索生成同一子结点时终止此搜索过程。通常有两种实现方法:1、用一个队列来储存子状态,起点和终点先后入队,正向搜索和逆向搜索交替进行,两个方向的搜索交替扩展子状态。直到两个方向的搜索产生相同的子状态结束。2、两个方向的搜索虽然是交替扩展子状态的。但是两个方向生成的子状态的速度不一定平衡。所以,可以每次选择子状态数较少的那个方向先进行扩展。这样就不会出现两个

2021-08-09 19:02:10 338

原创 迭代加深搜索

迭代加深搜索经常用于理论上解答树深度上没有上界的问题,这类问题通常要求出满足某些条件时的解即可。比如在“埃及分数”问题中要求将一个分数a/b分解成为若干个形如1/d的加数之和,而且加数越少越好,如果加数个数相同,那么最小的分数越大越好。下面总结一下该方法的一般流程:概述:迭代加深搜索是通过限制每次dfs的最大深度进行的搜索。令maxd表示最大的搜索深度,那么dfs就只能在0~maxd之间来进行,如果在这个范围内找到了解,就退出大循环,否则maxd++,扩大搜索范围。但可想而知,倘若没有高效及时的退出无解

2021-08-09 18:32:09 541

原创 差分:一维+二维

一维对于一个数列,我们需要维护的数据是“相邻两个数之差”。这种策略是,令,即相邻两数的差。我们称数列为数列的差分数列。它可以维护多次对序列的一个区间加上一个数,并在最后询问某一位的数或是多次询问某一位的数。譬如使 [l, r] 每个数加上一个 k,就是,最后做一遍前缀和。p [i] = p [i] +p [ i−1]就是对这个差分数列做一遍前缀和就得到了原来的数列,即相当于这个前缀和。极大的缩减了时间复杂度,时间复杂度就是 O(n)。AC代码#inc...

2021-07-27 16:13:56 102

原创 并查集+路径压缩

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。并查集两个操作“并”和“查”:并:将两个集合合并查:询问两个数是否在一个集合中(1)初始化。定义数组int s[]是以结点i为元素的并查集,开始的时候,还没有处理点与点之间的朋友关系,所以每个点属于独立的集,并且以元素i的值表示它的集s[i],例如元素1的集s[1]=1。  下面是图解,左边给出了元素与集合的值,右边画出了逻辑关系。为了.

2021-07-27 15:12:22 3015

原创 弗洛伊德算法

弗洛伊德算法是求任意点到所有点的最短距离任意节点i到j的最短路径两种可能:直接从i到j; 从i经过若干个节点k到j。假如现在只允许经过1号顶点,求任意两点之间的最短路程,应该如何求呢?只需判断e[i][1]+e[1][j]是否比e[i][j]要小即可。e[i][j]表示的是从i号顶点到j号顶点之间的路程。e[i][1]+e[1][j]表示的是从i号顶点先到1号顶点,再从1号顶点到j号顶点的路程之和。其中i是1~n循环,j也是1~n循环,代码实现如下。for (i = 1; i <

2021-07-27 14:29:21 523

原创 堆优化dijkstra

在介绍堆优化的dijkstra算法之前,先介绍一种存储图的数据结构——链式前向星:链式前向星其实就是静态建立的邻接表,时间效率为O(m),空间效率也为O(m)。遍历效率也为O(m)。struct Edge{ int to, w, next;//终点,边权,同起点的上一条边的编号}edge[maxn];//边集int head[maxn];//head[i],表示以i为起点的第一条边在边集数组的位置(编号)void init(){//初始化 for (int i = 0; i.

2021-07-05 14:14:27 1217 2

原创 18周总结

在介绍堆优化的dijkstra算法之前,先介绍一种存储图的数据结构——链式前向星:链式前向星其实就是静态建立的邻接表,时间效率为O(m),空间效率也为O(m)。遍历效率也为O(m)。struct Edge{ int to, w, next;//终点,边权,同起点的上一条边的编号}edge[maxn];//边集int head[maxn];//head[i],表示以i为起点的第一条边在边集数组的位置(编号)void init(){//初始化 for (int i = 0; i

2021-07-05 14:12:12 58

原创 17周总结

记忆化深搜求最短路+路径牛客:喜迎暑假多校联赛第一场H题:呜米喵想要成为爱抖露!链接:https://ac.nowcoder.com/acm/problem/222737来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述这一天MeUmy的大草原上突然出现了一个anti,他用了一个奇怪的装置把呜米的直播账号给锁住了。并留下说明书后光速跑路!解锁账号有两种方法!一

2021-06-28 17:40:20 80

原创 最小生成树问题

牛客:喜迎暑假多校联赛第一场H题:呜米喵想要成为爱抖露!链接:https://ac.nowcoder.com/acm/problem/222737来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 524288K,其他语言1048576K64bit IO Format: %lld题目描述这一天MeUmy的大草原上突然出现了一个anti,他用了一个奇怪的装置把呜米的直播账号给锁住了。并留下说明书后光速跑路!解锁账号有两种方法!一、这个装置上有一个地图,上面

2021-06-28 17:29:42 72

原创 2021-06-28记忆化深搜求最短路+路径

1:兔子与樱花总时间限制:1000ms内存限制:65535kB描述很久很久之前,森林里住着一群兔子。有一天,兔子们希望去赏樱花,但当他们到了上野公园门口却忘记了带地图。现在兔子们想求助于你来帮他们找到公园里的最短路。输入输入分为三个部分。第一个部分有P+1行(P<30),第一行为一个整数P,之后的P行表示上野公园的地点。第二个部分有Q+1行(Q<50),第一行为一个整数Q,之后的Q行每行分别为两个字符串与一个整数,表示这两点有直线的道路,并显示二者之间的矩离(单位..

2021-06-28 17:03:42 185

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除