
搜索
啊啊
1E6
这个作者很懒,什么都没留下…
展开
-
Longest path in a tree
Longest path in a tree题目链接大致题意:给出一个无权无向图,求该树的最长直径解题思路:模板题以1为根节点,跑一遍dfs,求出距离根节点最远的一端x然后从x开始在跑一遍dfs,求出树的最长路径补充:扩展题 毛毛虫 题解AC代码:#include <bits/stdc++.h>#define rep(i, n) for (int i = 1; i <= (n); ++i)#define debug(a) cout &l原创 2021-06-16 16:14:08 · 255 阅读 · 0 评论 -
8VC Venture Cup 2016 - Elimination Round Cards(dfs)
题目链接: Cards大致题意:题意:给你一个串,里面有三种颜色G、B、R,选择两个合并,合并规则:1:G+G=G,相同合并出来一个2:G+R=B,不同的合并,出来第三个解题思路:dfsAC代码:#include <bits/stdc++.h>using namespace std;const int N = 300;string s;int vis[N][N][N];int flag1, flag2, flag3;int n;void dfs(int r,原创 2021-01-14 14:51:11 · 133 阅读 · 0 评论 -
HDU - 1401 Solitaire(两种方法)
题目链接: Solitaire大致题意:在8*8棋盘有四颗棋子,输入开始状态和目标状态的棋子坐标,每次可以移动一个棋子也可以跳过另一个棋子,问能否在8步内走到目标状态解题思路:第一种做法:正常bfs,开一个八维数组注意:数组大小只能为8,不然会超内存第二种做法:双向广搜,8个坐标值位压缩成为10进制作为hash值,并用unordered_set判重,当hash值出现在另一个分支即相遇剪枝:每个棋子最多只能走4步,因为如果多于4步,那么他们步数之和就会大于8AC代码://第一种方法原创 2020-11-30 22:44:32 · 899 阅读 · 0 评论 -
HDU - 2612 Find a way(bfs+技巧)
题目链接: [Find a way]大致题意:zst和str二人要去肯德基,给出n*m的矩阵'Y’表示zst所在位置'M’表示str所在位置'.'表示可以行走的道路'#'表示不可通过的墙壁'@'表示肯德基(数量多于一把)二人每次行动只有上下左右四种方式,每次行动花费11个单位时间,问二人到达肯德基的时间之和最少解题思路:两个人跑同一个队列,就可以用一个数组来存两人到达同一处肯德基的时间总和(仔细分析代码),最后记得答案*11AC代码:#include <iostream&原创 2020-09-05 22:21:06 · 145 阅读 · 0 评论 -
HDU - 1495 非常可乐(bfs)
题目链接: [Oil Deposits]大致题意:一瓶体积为S毫升的可乐,一个体积N 毫升和一个体积M 毫升 的杯子(满足S=N+M),要求分出两杯体积相等的可乐,问倒可乐的最少的次数,如果不能输出"NO"解题思路:最少次数,肯定bfs广搜,先特判S是否被2整除,把装可乐的瓶子看作是一个体积为S的杯子,就是三个杯子两两组合,一共六种情况,在分为可以全到出,或者剩下一部分,每次操作次数+1,最后满足只要有两杯相同体积的可乐就可以AC代码:#include <iostream>原创 2020-09-05 21:47:12 · 197 阅读 · 0 评论 -
HDU - 1241 Oil Deposits(bfs)
题目链接: [Oil Deposits]大致题意:多组,给出一个n*m的矩阵,*代表没有油,@表示有油,石油可以看作是水平或者垂直或者对角线相邻(即8个方向)连接,问有多少个油藏解题思路:对n*m矩阵中的每一个@遍历,对@进行bfs广搜,对遇到的@进行标记(下次搜索视为不是石油),同时ans++,输出ansAC代码:#include<iostream>#include<algorithm>#include<cmath>#include<cst原创 2020-09-05 21:34:59 · 128 阅读 · 0 评论 -
POJ - 3984 迷宫问题(bfs打印路线)
题目链接: [迷宫问题]大致题意:一个5 × 5的二维数组,1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求找出并输出从左上角到右下角的最短路线解题思路:最短路线,肯定bfs,定义一个结构体存路线,当前点存上一个点的路线,最后递归输出AC代码:#include<iostream>#include<queue>#include<algorithm>#include<cstdio>using namespace std;原创 2020-09-05 17:29:00 · 163 阅读 · 0 评论 -
UVA 11624 Fire!(bfs+技巧)
题目链接: [Fire!]大致题意:在迷宫内,J表示人,F表示火,火可能不止一处,但是人只有一个,火会向上下左右蔓延,蔓延速度和人移动速度一样(每次一格,但是可以同时向四个方向),问是否可以成功逃出迷宫,不能输出IMPOSSIBLE,能的话输出最短路径。解题思路:两次BFS,首先把开始的F(火)入队列,然后进行BFS 并用times数组记录到达每个位置的时间,然后进行J(人)的BFS,当满足基本条件(不越界,未被访问),再满足到达某点时间小于火到达该点的times,则说明在火到达之前,到此位置。原创 2020-09-05 16:48:46 · 140 阅读 · 0 评论 -
Fire Game (bfs广搜)
题目链接: [Fire Game]大致题意:给出n*m的图,‘#’代表草,‘.’代表空地,火可以上下左右在有草的地方蔓延,让你从中选两处草地点火,求烧完所有草地的最少时间,若不能烧完,输出-1解题思路:求最短时间,肯定bfs广搜,我们需要在所有草中选择没有重复的两块草地,在进行bfs,所以我们需要保留原草地,在将所有的时间中取最小值AC代码:#include<iostream>#include<vector>#include<queue>typed原创 2020-09-05 16:27:34 · 166 阅读 · 0 评论 -
Pots (bfs广搜)
题目链接: [Pots]大致题意:给两个容器,分别装a升水和b升水。有三种操作:FILL(i) 将第i个容器从水龙头里装满 DROP(i) 将第i个容器抽干 POUR(i,j) 将第i个容器里的水倒入第j个容器(这次操作结束后产生两种结果,一是第j个容器倒满并且第i个容器依旧有剩余,二是第i个容器里的水全部倒入j中,第i个容器为空)要求使其中任何一个容器的水恰好是c升,输出最少操作数和过程解题思路:问最少操作数,就是bfs广搜,按照题意写好三原创 2020-09-05 10:36:01 · 266 阅读 · 0 评论 -
Prime Path (bfs广搜)
题目链接: [Prime Path]大致题意:T组,每组给出两个四位素数a,b,a每次可以改变某一位的数字,但满足改变后的数字也是素数,问最少变化几次使a变为b解题思路:问最少的变化,所以选bfs,防止不超时,开一个数组记录1所有的素数,然后对每一位数字进行遍历即可AC代码:#include <iostream>#include<cmath>#include <queue>using namespace std;int prime[10010],原创 2020-09-04 16:21:08 · 225 阅读 · 0 评论 -
Find The Multiple (dfs深搜)
题目链接: [Find The Multiple]大致题意:找到一个由0和1组成的可以整除n的数解题思路:dfs,只有两个操作,每次y*10或者y*10+1AC代码:#include<iostream>typedef long long ll;using namespace std;int flag;int n;void dfs(int x, ll y) { if (flag || x > 19)return; if (y % n == 0) { fla原创 2020-09-04 16:01:58 · 109 阅读 · 0 评论 -
棋盘问题(dfs深搜)
题目链接: [棋盘问题]大致题意:给出n*n的棋盘,放k个棋子,要求棋子不能同行同列,并且#代表可以放,问可以放k个棋子的方案数解题思路:dfs深搜,定义vis数组记录列的情况。AC代码:#include<iostream>typedef long long ll;using namespace std;char mp[10][10];int vis[10];//列int n, k, ans;void dfs(int m,int cnt) { if (cnt == k)原创 2020-09-02 16:03:48 · 213 阅读 · 0 评论 -
2019河北省大学生程序设计竞赛 L smart robot
题目链接: [smart robot]大致题意:给出n*n的矩阵,你可以在任意位置开始,也可以在任意位置停下,一个格子可以重复走,将走过的格子里的数连接起来(不要前导零的数),问无法得到的最小的数是多少解题思路:深搜每一个点,定义一个数组记录出现过的数字,大胆猜测位数不会超过五位,(假设1到k位数都满足条件的话,那么就有必有10k-1<=n24(k-1),然后由不等式10k-1>n2 4^(k-1) 可以得到地图为n*n 时不合法数的最大位数,将n=50代入,就可以知道为8),最后从1开原创 2020-08-31 16:18:37 · 241 阅读 · 0 评论