搜索
搜索
杪渊探骊
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【进阶指南】搜索 - 送礼物【双向DFS】
Date:2022.03.20题意描述:达达帮翰翰给女生送礼物,翰翰一共准备了 N 个礼物,其中第 i 个礼物的重量是 G[i]。达达的力气很大,他一次可以搬动重量之和不超过 W 的任意多个物品。达达希望一次搬掉尽量重的一些物品,请你告诉达达在他的力气范围内一次性能搬动的最大重量是多少。输入格式第一行两个整数,分别代表 W 和 N。以后 N 行,每行一个正整数表示 G[i]。输出格式仅一个整数,表示达达在他的力气范围内一次性能搬动的最大重量。数据范围1≤N≤46,1≤W,G[i]≤2原创 2022-03-20 22:07:24 · 570 阅读 · 0 评论 -
【进阶指南】搜索 - 加成序列【DFS迭代加深】
Date:2022.03.20题意描述:满足如下条件的序列 X(序列中元素被标号为 1、2、3…m)被称为“加成序列”:X[1]=1X[m]=nX[1]<X[2]<…<X[m−1]<X[m]对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j 可相等),使得 X[k]=X[i]+X[j]。你的任务是:给定一个整数 n,找出符合上述条件的长度 m 最小的“加成序列”。如果有多个满足要求的答案,只需要找出任意一个可行解。输入格式输入包原创 2022-03-20 21:42:27 · 972 阅读 · 2 评论 -
【kuangbin】搜索进阶 - 1.八数码【A*+记录路径】
Date:2022.03.15题目描述:在一个 3×3 的网格中,1∼8 这 8 个数字和一个 X 恰好不重不漏地分布在这 3×3 的网格中。例如:1 2 3X 4 67 5 8在游戏过程中,可以把 X 与其上、下、左、右四个方向之一的数字交换(如果存在)。我们的目的是通过交换,使得网格变为如下排列(称为正确排列):1 2 34 5 67 8 X例如,示例中图形就可以通过让 X 先后与右、下、右三个方向的数字交换成功得到正确排列。交换过程如下:1 2 3 1 2 3 1原创 2022-03-16 00:44:40 · 533 阅读 · 0 评论 -
cf1651 Educational 124 (Rated for Div. 2) -D【多源BFS】
Date:2022.03.10题意:找出离着每个点曼哈顿距离最近的、且不在给定的这n个点内的点。思路:核心是将给定的所有点按状态分为两种情况。①当前点周边四格都被占。离着它最近的点,等同于离着“四个被占的周边点”最近的点(一个递归过程),因此四边都被占的一定是由某一个四边有未被占的点拓展到的。②当前点周边四格有未被占的情况。未被占的点离着最近,因此可直接加入队列,拓展那些四周都被占的了点。由此显然多源bfs。有些乱,各部分作用:s[i]:s[i]:s[i]:存每个结点的(x,y)(x,y)(原创 2022-03-12 16:41:31 · 486 阅读 · 0 评论 -
洛谷P3252 [JLOI2012]树【树上dfs+查找】【黄】
Date:2022.02.21思路①:暴力dfs,每个点dfs一次。竟然没t,震惊(数据真水!代码如下:#include<bits/stdc++.h>using namespace std;typedef long long LL;const int N = 2e5+10;LL n,m,w[N],fa[N],ans=0;LL h[N],e[N],ne[N],idx;void dfs(LL u,LL k){ if(k>m) return; else if(原创 2022-02-22 00:57:20 · 380 阅读 · 0 评论 -
【kuangbin】简单搜索 - 14.找路【BFS】
Date:2022.02.15题意:给定一个 n 行 m 列的方格矩阵。其中有些方格是空地(可以进入),有些方格是餐厅(可以进入),有些方格是障碍(不可进入)。开始时,小 Y 和小 M 各自位于一个空地方格中。每个人都可以沿上下左右四个方向进行移动,移动一格距离需要花费 11 分钟时间。他们希望选择一家餐厅进行聚餐,要求两人从各自出发点到达该餐厅所花费的时间之和尽可能小。输出这个最小时间和。输入格式输入包含多组测试数据。每组数据第一行包含两个整数 n,m。接下来 n 行,包含一个 n×原创 2022-02-17 17:08:53 · 329 阅读 · 0 评论 -
【kuangbin】简单搜索 - 13.非常可乐【BFS】
Date:2022.02.15题意:大家一定觉的运动以后喝可乐是一件很惬意的事情,但是 seeyou 却不这么认为。因为每次当 seeyou 买了可乐以后,阿牛就要求和 seeyou 一起分享这一瓶可乐,而且一定要喝的和 seeyou 一样多。但 seeyou 的手中只有两个杯子,它们的容量分别是 N 毫升和 M 毫升。可乐的体积为 S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S=N+M,101>S>0,N>0,M>0) 。聪明的 ACME原创 2022-02-17 17:05:15 · 416 阅读 · 0 评论 -
ACW1107. 魔板【BFS最短路模型】
Date:2022.02.16题意:Rubik 先生在发明了风靡全球的魔方之后,又发明了它的二维版本——魔板。这是一张有 8 个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这 8 种颜色用前 8 个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列。对于上图的魔板状态,我们用序列 (1,2,3,4,5,6,7,8) 来表示,这是基本状态。这里提供三种基本操作,分别用大写字母 A,原创 2022-02-17 17:00:03 · 169 阅读 · 0 评论 -
【进阶指南】搜索 - 矩阵距离【多源BFS】
Date:2022.02.16题意:给定一个 N 行 M 列的 01 矩阵 A,A[i][j] 与 A[k][l] 之间的曼哈顿距离定义为:dist(A[i][j],A[k][l])=∣i−k∣+∣j−l∣dist(A[i][j],A[k][l])=|i−k|+|j−l|dist(A[i][j],A[k][l])=∣i−k∣+∣j−l∣输出一个 N 行 M 列的整数矩阵 B,其中:B[i][j]=min1≤x≤N,1≤y≤M,A[x][y]=1dist(A[i][j],A[x][y])B[i][j原创 2022-02-16 16:24:14 · 276 阅读 · 0 评论 -
【kuangbin】简单搜索 - 6.质数路径【BFS】
Date:2022.02.05题意:给定两个四位质数 A 和 B,你需要通过最少的操作次数将 A 变为 B。每次操作只能改变当前数的其中一位数字,并且每次操作过后,当前数必须仍然是一个质数。例如,将 1033 变为 8179,最少需要进行 6 次操作,具体操作为:1033 -> 1733 -> 3733 -> 3739 -> 3779 -> 8779 -> 8179请计算并输出所需要的最少操作次数。输入格式第一行包含整数 T,表示共有 T 组测试数据。每原创 2022-02-06 10:06:09 · 1019 阅读 · 0 评论 -
【kuangbin】简单搜索 - 8.罐子【BFS】
Date:2022.02.06题意:给你两个罐子,容积分别为 A 升和 B 升。现在,你可以进行如下三种操作:1.FILL(i),将罐子 i(1≤i≤2)灌满水。2.DROP(i),将罐子 i(1≤i≤2)清空。3.POUR(i,j),将罐子 i 中的水倒向罐子 j,直到罐子 i 空了或罐子 j 满了为止。请问,至少多少次操作后,可以使得其中一个罐子里恰好有 C 升水。输入格式共一行,三个整数 A,B,C。输出格式如果无解,则输出一行 impossible 即可。否则,第一行输出一个原创 2022-02-11 13:16:31 · 468 阅读 · 0 评论 -
cf1365 Round #648 Div2-D【BFS】
Date:2022.01.25题意:给定一个图,‘G’表示好人,‘B’表示坏人,让所有好人到达出口(n,m)的同时不让任意一个坏人到达出口(n,m)。求能否通过用墙’#‘堵上一些空地’.‘来实现这一操作,其中初始为’G’和’B’的点不能被填上’.’。思路:首先只有填空地’.‘才能堵上’B’,因此将每个’B’的四周’.‘都填上’#’,其中若’B’的四周存在’G’,那么一定不能保证让这个’G’到达的同时’B’也能到达,否则BFS从(n,m)开始,记录到达每个非’#'元素的路径长度,最后再判断所有’G’是否原创 2022-01-26 11:21:01 · 329 阅读 · 0 评论 -
【kuangbin】简单搜索 - 5.找倍数【BFS】
Date:2022.02.04题意:给定一个正整数 n,请你找到一个它的非零倍数 m。要求 m 中只包含数字 0 或 1,并且总位数不超过 100 位。输入格式输入包含多组测试数据。每组数据占一行,包含一个正整数 n。当输入 n=0 时,表示输入结束。输出格式每组数据输出一行 m。如果方案不唯一,则输出任意合理方案均可。数据范围1≤n≤200输入样例:26190输出样例:10100100100100100100111111111111111111思路:n只有200原创 2022-02-04 16:58:18 · 266 阅读 · 0 评论 -
【kuangbin】简单搜索 - 11.迷宫问题【BFS+记录路径】
Date:2022.02.13题意:给定一个 n×n 的二维数组,如下所示: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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。数据保证至少存在一条从左上角走到右下角的路径。输入格式第一行包含整数 n。接下来 n 行,每行包含 n原创 2022-02-14 01:34:23 · 177 阅读 · 0 评论 -
【kuangbin】简单搜索 - 2.地牢大师【BFS】
Date:2022.01.31题意:你现在被困在一个三维地牢中,需要找到最快脱离的出路!地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。向北,向南,向东,向西,向上或向下移动一个单元距离均需要一分钟。你不能沿对角线移动,迷宫边界都是坚硬的岩石,你不能走出边界范围。请问,你有可能逃脱吗?如果可以,需要多长时间?输入格式输入包含多组测试数据。每组数据第一行包含三个整数 L,R,C 分别表示地牢层数,以及每一层地牢的行数和列数。接下来是 L 个 R 行原创 2022-02-02 16:36:33 · 142 阅读 · 0 评论 -
【kuangbin】简单搜索 - 3.抓住那头牛【BFS】
Date:2022.02.02题意:农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点 N,牛位于点 K。农夫有两种移动方式:1.从 X 移动到 X−1 或 X+1,每次移动花费一分钟2.从 X 移动到 2∗X,每次移动花费一分钟假设牛没有意识到农夫的行动,站在原地不动。农夫最少要花多少时间才能抓住牛?输入格式共一行,包含两个整数N和K。输出格式输出一个整数,表示抓到牛所花费的最少时间。数据范围0≤N,K≤10510^5105输入样例:5 17输出样例:原创 2022-02-02 16:51:11 · 102 阅读 · 0 评论 -
【kuangbin】简单搜索 - 9.点火游戏【BFS】
Date:2022.02.11题意:给定一个 N 行 M 列的方格矩阵。其中一部分方格是草地,其余部分是空地。草地能够被燃烧,空地不会。当某个草地在 t 时刻被点燃时,其上下左右四个方向的相邻方格中的草地方格也会在 t+1 时刻被点燃。注意,空地方格无论如何都不可能被点燃。现在,你可以选择最多两个草地,将它们点燃。请你计算,使得所有草地都被点燃所需花费的最少时间。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含两个整数 N,M。接下来 N 行,包含一个 N×M原创 2022-02-11 15:03:46 · 1569 阅读 · 0 评论 -
cf1037 Manthan, Codefest 18 Div1+2 -D【BFS】
Date:2022.01.26题意:给定n个点n-1条边,构成一个图,初始点为1号点,求给定序列能否是该图中以1为起点的某个BFS序列。思路①:求出每个点的层数,如果存在逆序则不满足。喜提一发WA4,易知少考虑了一种情况,即:61 21 52 32 45 61 5 2 3 4 6这里每个点都在正确的层,但是层之间的顺序搞混了,怎么判断顺序?思路②:我们试着按给定顺序找到合法序列,每次判断当前元素后的若干元素是否满足与当前元素有连边,没有弹出找下一个元素;有则加入得到的序列。若最后按给原创 2022-01-27 22:11:34 · 166 阅读 · 0 评论 -
【kuangbin】简单搜索 - 10.起火迷宫【BFS】
Date:2022.02.13题意:一个迷宫可以看作一个 R 行 C 列的方格矩阵。其中一些方格是空地,用 . 表示,其他方格是障碍,用 # 表示。开始时,乔位于一块空地之中。迷宫中一些空地已经起火了,幸运的是火还没有蔓延至乔所在的位置。为了避免被火烧伤,乔需要尽快逃离迷宫。已知,乔每单位时间只能沿上下左右四个方向前进一格距离,并且在前进过程中,他不能进入障碍方格。火每单位时间都会蔓延至其上下左右四个方向的相邻空地,但是火也会被障碍阻挡。如果一个方格已经起火或者会在乔进入方格的那一时刻恰好原创 2022-02-14 01:31:44 · 383 阅读 · 0 评论 -
【kuangbin】简单搜索 - 1.棋盘问题【DFS】
Date:2022.01.31题意:在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 k 个棋子的所有可行的摆放方案数目 C。输入格式输入含有多组测试数据。每组数据的第一行是两个正整数 n,k,用一个空格隔开,表示了将在一个 n∗n 的矩阵内描述棋盘,以及摆放棋子的数目。当为-1 -1时表示输入结束。随后的 n 行描述了棋盘的形状:每行有 n 个字符,其中 ‘#’ 表示棋盘区原创 2022-02-02 16:29:12 · 106 阅读 · 0 评论 -
【寒假每日一题2022】acw1875. 贝茜的报复【DFS/二进制枚举】
Date:2022.01.26题意:农夫约翰和奶牛贝茜喜欢在业余时间互相出数学题。约翰给贝茜出了一道相当难的问题,导致她没能解决。现在,她希望通过给约翰出一道有挑战性的难题来报复他。贝茜给了约翰一个表达式 (B+E+S+S+I+E)(G+O+E+S)(M+O+O),其中包含七个变量 B,E,S,I,G,O,M(O 是变量,不是零)。对于每个变量,她给约翰一个列表,表中包含该变量可采用的最多 20 个整数值。她要求约翰计算,共有多少种给变量赋值的方法可以使得表达式的计算结果为偶数。输入格式第原创 2022-01-26 20:45:35 · 608 阅读 · 0 评论 -
cf1133 Round #544 Div3-F1【图论】
Date:2022.01.21题意:n个点m条边的图,无自环和重边。找到一个生成树,使得度数最大的点的度数不变。思路:这可能是最简单的3F,找到一个度数最大的点,与它的直接邻点相连的边一定选,选完将这些点标记为true,挨个搜这些邻点的邻点,dfs暴力搜莽过。代码如下:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 4e原创 2022-01-21 21:39:25 · 351 阅读 · 0 评论 -
cf723 Round #375 Div2-D【Floodfill+搜索】
Date:2022.01.19题意:给定n*m的岛,’.‘表示此处为水,连着的水为湖。连着边界的所有水为海,不算入湖。给定k,要求保留k个湖,至少需要填多少格像’.‘这样水,并输出填湖之后的岛。思路:先预处理所有连着海的点,都不算入湖。之后找到每个未被访问的点,dfs1找到它所在的连通块标记并为访问过。之后每个连通块取一个代表,bfs版Floodfill找到每个连通块的大小,加入vector中排序,保留最大的k个,其余算累加即为需要填补的’.'的数量;再找到需要的连通块,dfs2填上每个坑输出。(直接原创 2022-01-21 19:19:17 · 164 阅读 · 0 评论
分享