
搜索
文章平均质量分 77
搜索
Cu1ii*
平凡的铁匠
展开
-
第k短路(A*)
题目链接Remmarguts’ Date如果不了解A*算法可以先去看一下 由A*算法可以直到,当目标点第一出优先队列时,一定是最优解,所以当目标点T第k次出队时,就是第k短路,这是可以用反证法证明的: 假设这是第m次出队(m > 1) ,那么这一次出队是当前所有解中最优(A*性质),所以假设此次路径短于第m - 1次出队长度,显然上一次出队的值应该就是此次出队的值,与假设不符,故该路为第m短路h(x)就可以采用终点到各个点的最短路作为启发式函数,因为可以保证在找第k短路的过程中某点到终点的原创 2021-01-26 18:11:06 · 323 阅读 · 0 评论 -
BFS 进阶之 A*, 双向bfs
双向BFS 在由起点状态到目标状态进行搜索时,搜索树是以指数层级递增的,所以说在一些情况下,时间复杂度会导致单向的bfs TLE掉或者 MLE掉,这时候就需要对bfs进行一些优化,双向bfs就是一种,双向bfs适用于得知起点和目标点状态时适用,使用两个队列分别从起点和目标点进行双向搜索,当两个方向的状态第一次相遇,即为最短转移路径,这样可以限制搜索树的深度一般在原搜索树的一半左右,极大的降低了所需的复杂度可以参考一下这个图 引用自当两种颜色相遇的时候,说明两个方向的搜索树遇到一起,这个时候就搜到了答原创 2021-01-22 04:21:01 · 756 阅读 · 0 评论 -
F. Sierpinski Triangle 补(UCF Local Programming Contest 2014(Practice))
题目链接F. Sierpinski Triangle找左上角起点规律#include <iostream>#include <cstring>#include <cmath>using namespace std;const int maxn = 1500;char vis[maxn][maxn];void dfs(int num,int x,int y){ if(num == 1){ vis[x][y]=vis[x+原创 2020-07-21 13:28:08 · 190 阅读 · 0 评论 -
poj 1315 Don‘t Get Rooked
题目链接Don’t Get Rooked题意:给一个最多4 × 4的棋盘,每放置一个点,与这个点同行同列就不能再放点除非两个点在墙的两侧,问给定规模的棋盘最多能放多少个点思路:数据少,直接暴力dfs#include <iostream>#include <cstdio>#include <cstring>#include <string>using namespace std;char chess[5][5];bool vis[5]原创 2020-07-20 02:13:34 · 212 阅读 · 0 评论 -
poj 1040 Transportation
题目链接http://poj.org/problem?id=1040太懒了,这里题意就转下别的大佬的吧。。https://blog.youkuaiyun.com/Silenceneo/article/details/47721059大意——从A到B有若干个车站,编号从0到m,列车的最大载客量是n。每次列车开车之前,会从各个车站收集订票信息。一条订票信息包括:起点站,终点站,人数。票价在数值上等于起点站与终点站之间的车站数(包括终点站,不包括起点站)。由于列车的最大载客量是一定的,所以不一定能接受所有的订票。对于一原创 2020-07-19 22:38:34 · 668 阅读 · 0 评论 -
八皇后
The Sultan’s Successors UVA - 167 这里主要学习一下用行号和列号表示棋盘的左右对角线#include <iostream>#include <cstring>#include <string>#include <cstdio>using namespace std;int bord[10][10];bool col[10],le[20],ri[20];int maxsum;void dfs(int r.原创 2020-07-19 02:14:18 · 121 阅读 · 0 评论 -
hdu 1401 Solitaire (单/双bfs)
题目链接Solitaire大意:一个8*8的棋盘上有四个棋子,给出始末状态下四个棋子坐标,问能不能在8步内从初始状态变成末状态1、单bfs,开一个8维数组,将整个棋盘上的四个棋子作为整体,然后一般的bfs就可以了,主要是下面的双向bfs单bfs代码#include <iostream>#include <queue>#include <cstring>using namespace std;bool vis[8][8][8][8][8][8][8][原创 2020-07-10 13:38:59 · 208 阅读 · 0 评论 -
Escape (bfs)
题目链接Escape题目大意:小a从(0,0)点走到(n,m)点,地图上有k个碉堡,每个碉堡以周期为t,射速为v进行射击,战士碰到子弹时,战士死亡,且战士只能在整数点上碰到子弹,子弹撞上碉堡后子弹会消失,开始时所有碉堡都会射击。思路:我们可以开两个三维数组存储碉堡状态,和当前记录该点是否已经到达过,切记,后一个数组要用bool型或者char 型不然内存就爆了,然后在到达每个点时上下左右暴力跑一遍,看看该点是否安全,安全就入队列。#include <iostream>#include &原创 2020-07-09 21:23:34 · 183 阅读 · 0 评论 -
Igor In the Museum(bfs)
题目链接Codeforces 598D Igor In the Museum说实话,在看别人博客之前,没看懂题。。大意是这样的,用 ‘ * ’ 表示墙, ‘ . ’ 表示空地,空地四周的墙上都有画,然后随机给出一个空地坐标,问该 空地 和其连体的 空地 周围一共有多少画。分析:就是求出每个点周围有多少画,然后相加,但是因为是求一片空地的,所以不能用单点的坐标去记录画的数量,所以采用一维数组,讲每一片空地进行标号,最后不论输入的是这片空地的哪一块地,都直接输出该标号所代表空地的值,因为一片空地的标号原创 2020-07-08 19:18:04 · 421 阅读 · 0 评论 -
hdu1429 胜利大逃亡(续)
题目链接跟简单搜索不同的是,这个钥匙开门机制,确实很难去想。后来看到了别人将其转化为二进制数进行存储表示钥匙状态,因为最多10把钥匙,所以只需要2^10就可以存下,而且要注意,因为在取钥匙开门的过程中,可能会走过一个点数次,所以需要将钥匙状态存储并判断是同一状态下,有无重复走过。 if(maps[next.x][next.y] >= 'a' &&maps[next.x][next.y] <= 'j'){ int temp1 = maps[next.x][ne原创 2020-07-06 19:32:01 · 145 阅读 · 0 评论 -
迷宫问题(dfs)(顺序栈实现)
传送门其实吧,走迷宫问题我个人觉得,还是bfs更好一些,但是实验题为了联系栈的使用,估计是把数据针对了一手,bfs跑不了,那就dfs吧跟正常的dfs一样,但是感觉可以剪下枝,具体的看代码吧,dfs思路还是很简单的#include <cstdio>#include <cstdlib>#include <iostream>const int MAXN = 105,MAX = 1e3;int maps[MAXN][MAXN],vis[MAXN][MAXN];//原创 2020-06-15 20:29:39 · 540 阅读 · 0 评论 -
ICPC North Central NA Contest GSheba‘s Amoebas(dfs)
After a successful Kickstarter campaign, Sheba Arriba has raised enough money for her mail-order biology supply company. “Sheba’s Amoebas” can ship Petri dishes already populated with a colony of thos...原创 2020-04-01 20:24:37 · 338 阅读 · 0 评论 -
HDU 2612 Find a way (双bfs)
Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’...原创 2020-03-21 13:26:04 · 241 阅读 · 0 评论 -
油田问题
版权声明:本文为优快云博主「Xiyou_limeng」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/ldx19980108/article/details/76324307油田问题问题:GeoSurvComp地质调查公司负责探测地下石油储藏。 GeoSurvComp现在在一块矩形区域探测石油,并把...转载 2020-03-19 11:01:06 · 387 阅读 · 0 评论 -
Catch That Cow (bfs)
Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,0...原创 2020-03-19 00:43:00 · 180 阅读 · 0 评论 -
bfs最短路径 迷宫问题
定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 Input一个5 × 5的...原创 2020-03-18 16:55:22 · 750 阅读 · 0 评论