摘要:
这题深搜的的话,我们进入一个点的时候,我们就把步数加一,然后这个点标记为0,然后再向其他的方向走,这是正确的思路。错误的思路就是,先走向四个方向,然后标记下一个方向的点,然后进入dfs,这个思路没有太大的毛病,但是有一个问题,如果周围都不能走,那我们就不能通... 阅读全文
摘要:
这题的题意说的是找到一个m,m的值就是n的倍数,并且m仅由1和0组成。这题的话,我们用广搜,搜索还是很快的,我们让1入队列,每次向下分支的时候,我们就让这个队列头的数乘10,或者乘10+1就行了,因为我们最开始只让1入了队列。这题就相当于是在寻找仅由1、0组... 阅读全文
摘要:
这一题的话,我们搜索的时候,边界条件就是棋子的数目等于k,这时候方案数加一然后return。 如果超过行号的最大值,我们也返回,不过不做任何操作,这也是一个边界条件。 如果 r 行的 j 个位置是棋盘并且这一列没有放入棋子,我们就放入一颗棋子,该列标记为1,已放棋子数加一,然后访问下一行。 这个递归 阅读全文
摘要:
这一题的话,我们搜索的时候,边界条件就是棋子... 阅读全文
摘要:
这题的话,我们,定义一个结构体,然后把木棒从大到小排序。这些木棒如果是由多根等长木棒组成的,那目标长度一定大于等于其中最长的木棒长度,所这就是我们搜索的下限。上限就是所有的木棒组成了一根木棒,就是所有木棒长度的总和,确定了搜索范围之后,我们再来确定搜索的边界... 阅读全文
摘要:
Bellman-Ford算法是一个时间复杂度很高,但是它可以用来判断负环负环就是上面的图,那个环的整体值小于零了,所以就是负环。我们用Bellman-Ford算法进行更新,打一个表出来:k a b c s00 10 1 -2 20 1 ... 阅读全文
摘要:
这题的话就是单源最短路的问题,不过题目中加入了两个不同的权值,一个是高优先级的路径长度,一个是低优先级的花费。我们在读入的时候,按照高优先级为先的顺序进行修改,如果某点到另一点的路径长度更短,那我们就修改它的长度和花销。如果长度相同并且花销更小,我们就可以修... 阅读全文
摘要:
这题应该算是最简单的最短路了,没什么好说的。#include #include using namespace std;const int INF = 1 d[k]+w[k][j]) d[j] = d[k] + w[k][j];... 阅读全文
摘要:
这题的话,坑点挺多的,我也WA了好几次。首先,对于map,因为是多次使用,所以每次处理完一个图之后就要清空。其次,就是对于DIjkstra跑图的时候,如果这个图是连通图的话,我们每次选取最小值点是一定可以选到的,但是对于不连通的图,如果任何一个点都不与终点连... 阅读全文
摘要:
这题没什么要注意的,只要建模没问题,代码其实OK的。这题原点和终点是固定的,也就省了设置变量了。这题的模型是无向带权的图,我们建立双向的边就可以啦。#include #include const int INF = 1 d[x]+w[x][j]) { ... 阅读全文