
搜索
文章平均质量分 53
加油
河林山
这个作者很懒,什么都没留下…
展开
-
小技巧:从地图的某点传送到某点
代码:#include<bits/stdc++.h>using namespace std;const int N=1010;char e[N][N];int vx[N][N],vy[N][N],book[N][N];int to[4][2]={0,1,0,-1,1,0,-1,0};int n,m,st,et;struct Node{ int x,y,s;};int bfs(int x,int y){ int gx,gy,flag,tx,ty,i; queue<原创 2022-04-04 17:07:09 · 506 阅读 · 0 评论 -
Infinite Maze CodeForces - 197D(bfs)
vjudge提交链接题意:给你一张 n * m的地图,S表示起点,#表示墙, . 表示空地。现在要把该平面扩大,无休止的复制该地图,把该平面堆的无限大。现在问的能否从起点S永无止境的走下去。思路:虽然地图变大了,但任意一点所表示的字符都可知晓。即点( i , j ) 与 ( ( i % n + n ) % n , ( ( j % m + m ) % m )【原地图】这里 i 和 j 可能为正,可能为负数,因为地图被无限放大了。无限大平面由许多个 n * m 拼接而成,因此设地图1号,地图原创 2022-03-15 21:50:36 · 286 阅读 · 0 评论 -
Sticks (UVA - 307)(dfs+剪枝)
题目:Sticks题意:一大堆相同长度的木棍被随意切割成n份小木棍,现想要再次拼接成一大堆相同长度的木棍,求原始最短木棍的可能长度.思路:从小到大依次枚举所有的可能长度len,第一次找到可拼接成的len就是答案.当打算把所有小木棍拼接成一大堆长度为len木棍时,需要木棍之间进行组合,不能确定谁和谁属于一根的,因此需要用到dfs算法,当发现此刻拼接的不对时,可以进行回溯,返回到上一步.剪枝(优化):优化1:对小木棍进行从大到小排序.原因:在选择木棍拼接时,原则上只要不超过假定的长度l原创 2021-07-25 11:27:54 · 316 阅读 · 0 评论 -
bfs+剪枝(一点到另一点,求的是最短/最少)
题目1:拯救行动计蒜客提交链接解题思路:理论上深搜一定可以得出答案,但会超时,即使加2个剪枝也会超时。剪枝1:当前步数>=最小步数,返回;剪枝2:此刻经过点(x,y)的步数>之前经过该点时的步数,返回。如果用广搜需要解决这个问题:骑士层层向外搜索第一次找到公主时不一定花费的时间最少,只能说是路径最短。即广搜过的点有可能会再次被利用,进入队列。如何判断该点需不需要再次被利用。用到深搜中的剪枝2思想,即当小于等于时让该点进队列。上述问题已解决。为了更节省时间,剪枝1也用。代码1(原创 2021-05-08 12:25:38 · 576 阅读 · 0 评论 -
单源最短路:bfs()+邻接表模板(邻接表2种方法构建)
题目:On Average They’re Purple牛客提交链接示例1输入3 31 31 22 3输出0示例2输入7 81 21 32 43 44 54 65 76 7输出3题意:——求1到n的最短路,再减1即可。题意可能不太容易明白,多琢磨琢磨。代码1:(vector容器构建邻接表)#include<stdio.h>#include<string.h>#include<algorithm>#inc原创 2021-05-05 10:30:24 · 182 阅读 · 0 评论 -
摘花生(简单记忆化搜索)
vjudge提交链接题目:摘花生——Hello Kitty 想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty 最多能够摘到多少颗花生。Input——第一行是一个整数T,代表一共有多少组数据。1<=T <= 100接下来是T组数据。——每组数据的第一行原创 2021-03-14 21:05:32 · 218 阅读 · 0 评论 -
八皇后(N皇后另一变形(简易深搜))
vjudge提交链接题目:八皇后——会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。——对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2…b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。——给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。原创 2021-03-14 20:13:00 · 259 阅读 · 0 评论 -
广搜版本全图最短路(一点到别点的最短路)
给定一个N x M的01矩阵,其中1表示陆地,0表示水域。对于每一个位置,求出它距离最近的水域的距离是多少。矩阵中每个位置与它上下左右相邻的格子距离为1。Input第一行包含两个整数,N和M。以下N行每行M个0或者1,代表地图。数据保证至少有1块水域。对于30%的数据,1 <= N, M <= 100对于100%的数据,1 <= N, M <= 800Output输出N行,每行M个空格分隔的整数。每个整数表示该位置距离最近的水域的距离。Sample Input4原创 2020-10-07 13:49:22 · 264 阅读 · 0 评论 -
不一样放牌游戏
题目1(整数拆分)将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,...编程求出正整数N的所有整数分解式子。输入格式:每个输入包含一个测试用例,即正整数N (0<N≤30)。输出格式:按递增顺序输出N的所有整数分解式子。递增顺序是指:对于两个分解序列N1={n1,n2,⋯}和N2={m1,m2,⋯},若存在i使得n1=m1,⋯,ni=mi,但是n(i+1)<m(i+1),则N1序列必定在N2序列之前输出。每个式子由小到大原创 2020-10-24 13:35:27 · 204 阅读 · 0 评论 -
经典问题N皇后(简易搜索)
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample Input1850Sample Output19210#include "stdio.h"#include "m原创 2020-09-26 14:06:08 · 157 阅读 · 0 评论 -
记忆化搜索==dfs+剪枝,将滑雪进行到底
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-1原创 2020-09-26 09:22:46 · 276 阅读 · 0 评论 -
搜索+剪枝.求最小m%k==0(m会爆long long)
Given two positive integers n and k, you are asked to generate a new integer, say m, by changing some (maybe none) digits of n, such that the following properties holds:m contains no leading zeros and has the same length as n (We consider zero itself a on转载 2020-09-01 22:27:16 · 298 阅读 · 0 评论