
搜索|DFS
MaJorie555
我们向右偏左的坠落,琢磨着寻求自我
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU1045 Fire Net【DFS】
题目链接:HDU1045 Fire Net【DFS】 题意:一个至多4*4的棋盘,棋盘上有一些墙壁,可以阻挡子弹,炮台可以向四个方向发射子弹,问在保证他们不能互相攻击的情况下至多可以放置多少炮台; 分析:搜就对了; #include<bits/stdc++.h> using namespace std; char mp[5][5]; int n,ans; bool check(...原创 2019-10-30 17:23:23 · 180 阅读 · 0 评论 -
HDU3290 The magic apple tree【DFS】
题目链接:HDU3290 The magic apple tree 题意:给你一个树,起始叶子结点的值为他的编号本身,开始更新后,如果一个非叶子结点有K个子节点有值,那么他的值更新为这些值中第(k+1)/2小,求根节点的最后值; 分析:从根节点向下DFS,到叶子结点之后向上回溯,裸题; #include<bits/stdc++.h> #define pb push_back u...原创 2019-10-29 20:30:44 · 184 阅读 · 0 评论 -
2019ACM/CCPC吉林省赛——B.Gift Node【DFS+差分约束】
B Gift Node Time Limit : 2000/1000ms (Java/Other)Memory Limit : 524288/524288K (Java/Other) Problem Description You are given a tree with n nodes (numbered from 1 to n). The root is node 1. Eac...原创 2019-07-10 17:35:49 · 908 阅读 · 0 评论 -
UVA1252 20个问题【状压DP+DFS】
题目链接:UVA1252 题意:给你n个物品,每个物品有m种属性,1代表有,0代表没有,问至少几次询问可以知道我心中想的是哪个; 分析:不知道是哪个串,所以可以是任意一个,那么就是所有串的最少询问次数里最大的那个;01串,考虑状压成一个数;思考一下,猜物品的过程中一定是一位一位猜,然后根据满足或不满足筛掉或选择一些物品,然后继续判断下一位的两种情况,所以必然是一个DFS的递归迭代过程;那么也就...原创 2019-10-03 21:29:52 · 207 阅读 · 0 评论 -
HDU2181 哈密顿绕行世界问题【DFS+暴力】
题目链接:哈密顿绕行世界问题 分析:暴力dfs向后延伸20位,注意判断第20位是否能回到起点; #include<bits/stdc++.h> #define pb push_back using namespace std; typedef long long ll; const int maxn=1e5+7; const int mod=1e9+7; const ll INF=...原创 2019-10-04 15:36:59 · 149 阅读 · 0 评论 -
HDU1560 DNA sequence【DFS+IDA*】
题目链接:HDU1560 DNA sequence 题意:给你n个字符串,问子序列包含所有串的字符串的最短长度是多少; 分析:答案可能的最小值一定是所有串里最大的长度,从这里开始假定它是当前的ans,dfs判断一下能否以此为答案构造出一个满足题意的串,可以的话这就是答案(因为要求的是最短长度),否则ans++,再次判断,有一个IDA*思想的check剪枝,就是查询再当前构造情况下满足题意至少还需...原创 2019-10-04 17:27:05 · 150 阅读 · 0 评论 -
Codeforces Gym102059 E. Electronic Circuit【思维+BFS/DFS】
题目链接:E. Electronic Circuit 题意:n个节点,m条电路,判断该电路是否是一个正确的简单电路; 分析:由题目可以分析出,一个简单电路是指电路中有一个正极一个负极,那么我们考虑简化电路,正确的电路最后应该只剩下两个点和一条电路;比如说1-2和2-3就可以将节点2删除,建立一条1-3的新边,因为1和3可以通过2互相到达,要注意的是,有且仅有2个节点相邻的节点才可以被删掉;还有...原创 2019-10-08 16:41:19 · 269 阅读 · 0 评论 -
HDU2510 符号三角形【DFS打表】
题目链接:HDU2510 分析:打24个表就好了,其实只要决定第一行就可以,然后下面每一行按规则放,然后check一下两个的个数是否相等; 打表程序: #include<bits/stdc++.h> using namespace std; int ans,n; int a[30][30]; void dfs(int num) { if(num==n+1) { ...原创 2019-10-08 20:48:03 · 211 阅读 · 0 评论