
DFS
yxg_123
这个作者很懒,什么都没留下…
展开
-
紫书搜索 习题7-10 UVA - 11214 Guarding the Chessboard 迭代加深搜索
题目链接:https://vjudge.net/problem/UVA-11214题意:给出m*n棋盘上的目标点,求最少用几个皇后可以守卫所有目标点。 题解:类似八皇后做法,2维数组标记行、列、主对角线、副对角线。 代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a原创 2017-03-14 17:28:23 · 375 阅读 · 0 评论 -
紫书搜索 例题7-5 UVA - 129 Krypton Factor
题目链接:https://vjudge.net/problem/UVA-129题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst i原创 2017-03-12 12:42:38 · 279 阅读 · 0 评论 -
紫书搜索 例题7-4 UVA - 524 Prime Ring Problem
题目链接:https://vjudge.net/problem/UVA-524题意:给一个n,要求生成1~n的排列,第一个数是1,相邻的两个数的和是素数,包括第一个和最后一个。题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#de原创 2017-03-12 12:05:23 · 259 阅读 · 0 评论 -
CodeForces Gym 100500A A. Poetry Challenge DFS
题目链接:http://codeforces.com/gym/100500/attachments题意:文字接龙,谁接不下去了,就算谁输 输出赢家 都很聪明的情况下题解:看起来是博弈 不会啊 这个dfs还不懂 qsc ls:转化成图论之后,直接DFS爆搜就好了!代码:#include <bits/stdc++.h>using namespace std;typedef long lo原创 2017-02-27 18:02:00 · 433 阅读 · 0 评论 -
cdoj 483 Data Structure Problem DFS
题目链接:http://acm.uestc.edu.cn/#/problem/show/483题意:给你n个数,然后这n个数构成的二叉树,是平衡二叉树还是堆题解:dfs 根据题目中给的 堆 (a[x]>=a[x*2] && a[x]>=a[x*2+1]) || (a[x]<=a[x*2] && a[x]<=a[x*2+1]) 最大堆 最小堆 BST (a[x]>a[x*2] && a[原创 2017-02-27 13:16:56 · 274 阅读 · 0 评论 -
Codeforces Round #313 (Div. 1) B. Equivalent Strings DFS暴力
题目链接:http://codeforces.com/contest/559/problem/B题意:判断俩字符串是否相似,相似的条件如下: a1+a2=A,a1和a2都是A的一半 b1+b2=B,同理 如果A,B相等,那么相似 如果A的长度为偶数{ 如果a1与b1,a2与b2相似或者a1与b2,b1与a2相似 那么A,B相似 } 否则不相似题解:dfs代码:#include原创 2017-02-27 12:11:44 · 308 阅读 · 0 评论 -
Codeforces Gym 100463D Evil DFS
题目链接:http://codeforces.com/gym/100463题意:给你一个坐标系,上面有n个点,要求找到一个矩形,使得能够框住一半的红点,不框进任何一个蓝点,求最小矩形面积题解:暴力枚举,注意,矩形面积可以为0代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) mems原创 2017-02-27 09:11:44 · 241 阅读 · 0 评论 -
codeforces Gym 100187J J. Deck Shuffling dfs
题目链接:http://codeforces.com/gym/100187/problem/J题意:给你一堆牌,和一些洗牌机,可以改变牌的顺序,问你能不能通过洗牌机把数字为x的牌洗到第一个位置。 样例一: 最初的牌 4 3 2 1 通过第一个洗牌机把第四个位置的x(=1)洗到第三个位置 然后 第二个洗牌机把当前在第三个位置x洗到第一个位置题解:建边,把洗牌机每个位置–>下一个位置(也就是这个原创 2017-02-27 01:21:03 · 377 阅读 · 0 评论 -
Codeforces Round #308 (Div. 2) C. Vanya and Scales dfs
题目链接:http://codeforces.com/contest/552/problem/C题意:给你100个砝码,第i个砝码质量是w^i,然后问你能不能在有m的情况下,左边和右边都放砝码,使得这个天平平衡题解:dfs直接暴力 对于这个砝码来说,只有3种选择,放左边,不放,放右边 由于2和3直接输出yes,所以答案也就没多少了正解:m的w进制, 从低位到高位 模拟。。 每一位只能是0,1,原创 2017-02-26 23:52:27 · 223 阅读 · 0 评论 -
紫书搜索 例题7-12 UVA - 1343 The Rotation Game IDA*迭代加深搜索
题目链接:https://vjudge.net/problem/UVA-1343题意:数字1,2,3都有八个,求出最少的旋转次数使得图形中间八个数相同。 旋转规则:对于每一长行或每一长列,每次旋转就是将数据向头的位置移动一位,头上的数放置到尾部。若次数相同,则找出字典序最小旋转次序。 输入是从上到下,从左向右,注意方向题解:代码:#include <bits/stdc++.h>using na原创 2017-03-12 19:20:25 · 260 阅读 · 0 评论 -
紫书搜索 例题7-13 UVA - 1374 Power Calculus 迭代深搜+剪枝 IDA*
题目链接:https://vjudge.net/problem/UVA-1374题意:给定一个数n,让你求从1至少要做多少次乘除才可以从 x 得到 xn。题解:首先这个是幂级的,次数不会很多,所以可以考虑IDA*算法,这个算法并不难,难在找乐观函数h(x),这个题乐观函数可以是当前最大数*2^(maxd - d) 小于n,回溯。很好理解,最大的数再一直乘2都达不到,最终肯定达不到。再就是应该先试乘再原创 2017-03-12 19:46:43 · 293 阅读 · 0 评论 -
紫书搜索 习题7-8 UVA - 12107 Digit Puzzle IDA*迭代加深搜索
题目链接:https://vjudge.net/problem/UVA-12107题意:给出一个数字谜,要求修改尽量少的数,使修改后的数字谜只有唯一解。空格和数字可以随意替换,但不能增删,数字谜中所有涉及的数必须是没有前导零的正数。输入数字谜一定形如a*b=c,其中a、b、c分别最多有2、2、4位。题解:http://www.cnblogs.com/tyty-Somnuspoppy/p/636672原创 2017-03-14 16:59:20 · 893 阅读 · 0 评论 -
紫书搜索 习题7-7 UVA - 12558 Egyptian Fractions (HARD version) IDA*迭代加深搜索
题目链接:https://vjudge.net/problem/UVA-12558题意:题解:输出要用lld IDA*迭代加深搜索 紫书例题改一改代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_p原创 2017-03-14 15:25:17 · 295 阅读 · 0 评论 -
紫书搜索 习题7-6 UVA - 12113 Overlapping Squares 暴力
题目链接:https://vjudge.net/problem/UVA-12113题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst原创 2017-03-14 12:18:28 · 316 阅读 · 0 评论 -
紫书搜索 习题7-4 UVA - 818 Cutting Chains 暴力+dfs判环+位运算
题目链接:https://vjudge.net/problem/UVA-818题意:选几个圆环去open。然后该圆环和其他就断开了。然后用这些open的圆环去连接剩下的圆环【最后打开的会合上】,看能不能连成一串。。求最少的open个数。题解:n为15.利用位运算去枚举哪几个圆环要open。然后判断剩下圆环有没有与超过2个圆环的连接或者形成环,如果没有,在判断剩下的链个数有没有超过open个数-1.如原创 2017-03-14 10:41:06 · 268 阅读 · 0 评论 -
紫书搜索 习题7-3 UVA - 211 The Domino Effect 搜索dfs
题目链接:https://vjudge.net/problem/UVA-211题意:给一副图,代表多米诺骨牌摆放方式,每两个连成一块牌,如0 0 对应1号排 0 1 对应2号排,问图可以代表几种摆放方式。题解:dfs,每个位置的牌不是竖就是横,枚举2个方向,最多枚举28块,O(2^28),加个剪枝,如果进入枚举下一行了,当前行还有没填上的,就直接回溯。代码:#include <bits/stdc++原创 2017-03-13 23:04:38 · 306 阅读 · 0 评论 -
紫书搜索 习题7-2 UVA - 225 Golygons 搜索dfs
题目链接:https://vjudge.net/problem/UVA-225题意:题解:枚举每一步的方向 没有想到字典序可以从一开始找方向就处理掉。 还有多一条剪枝,就是当前位置太远剩余的所有步数都不够回道原点代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,原创 2017-03-13 21:25:50 · 254 阅读 · 0 评论 -
紫书搜索 例题7-10 UVA - 11212 Editing a Book 迭代加深搜索 IDA*
题目链接:https://vjudge.net/problem/UVA-11212题意:题解:IDA*,每次改变深度上限去剪枝代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB原创 2017-03-13 19:36:09 · 241 阅读 · 0 评论 -
紫书搜索 习题7-1 UVA - 208 Firetruck 搜索dfs
题目链接:https://vjudge.net/problem/UVA-208题意:题解:代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB push_backconst i原创 2017-03-13 20:06:36 · 259 阅读 · 0 评论 -
51nod 1307 绳子与重物 二分+dfs / 并查集
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1307题意:题解:方法一: 因为所有绳子最终组成了1棵树,所以我们可以通过一次DFS,来检测是否有某根绳子下面绑了超过他所能负荷的重量。 具体方法:对每个节点,计算其子树的重量和(包含自身的重量),如果大于能承受的最大重量,则绳子会断,否则不会断。 一次DFS原创 2017-03-22 20:48:30 · 424 阅读 · 0 评论 -
Codeforces Round #306 (Div. 2) B. Preparing Olympiad dfs
题目链接:http://codeforces.com/contest/550/problem/B题意:有n门课,然后让你选择一些课,要求这些课程的和小于等于r,大于等于l,最大值减去最小值至少为x 然后问你有多少种分法题解:数据范围小 n<=15 所以可以把n门课 变成二进制的状态0~(1<代码:dfs ~#include <bits/stdc++.h>using namespace std;原创 2017-02-26 21:28:17 · 233 阅读 · 0 评论 -
hdu 4499 Cannon dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4499题意:在一个象棋棋盘上放炮,要求两个炮不能互相打到,然后问你最多能放几个炮题解:dfs 一直dfs到最后一行最后一列 就可以 每个点只往上和往左扫了 vis[x][y]= 0 表示这个点没有棋子 1表示 普通的棋子 2表示 炮代码:#include <bits/stdc++.h>using n原创 2017-02-26 20:01:46 · 309 阅读 · 0 评论 -
cdoj 15 Kastenlauf dfs
题目链接:http://acm.uestc.edu.cn/#/problem/show/15题意:n+2个点,要求每个点之间的距离小于等于1000就可以走过去,然后问你能否从1走到n+2题解:dfs代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof原创 2017-02-26 18:38:07 · 288 阅读 · 0 评论 -
poj 1088 滑雪 记忆化搜索
点击打开链接代码:#include #include #include using namespace std;typedef long long ll;#define mem(a) memset(a,0,sizeof(a))#define mp(x,y) make_pair(x,y)const int INF = 0x3f3f3f3f;const ll INFLL =原创 2017-02-23 19:28:51 · 251 阅读 · 0 评论 -
hdu1269 移动城堡 联通分量 Tarjan
点击打开链接思路:tarjan求强连通分量 判断ans==n?卿学姐视频:http://www.bilibili.com/video/av7330663/代码:#include using namespace std;const int INF = 1<<30;const int maxn = 1e4+7;int dfn[maxn],low[maxn],vis[max原创 2017-02-23 18:58:43 · 255 阅读 · 0 评论 -
Aizu 2306 Rabbit Party DFS
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2306题意:给定n个点的完全图,下面给出m条边权不为0的边 下面m行给出边和边权。 其他的边边权都为0. 选择一个点集出来,点权是这个点连接这个点集的边权最小值 找一个这样的子图使得点权和最大,输出点权和。题解:最后选出来的点,一定是由那m个边所组成的完全图 因为是原创 2017-03-01 00:40:21 · 198 阅读 · 0 评论 -
Codeforces Round #321 (Div. 2) C. Kefa and Park dfs
题目链接:http://codeforces.com/contest/580/problem/C题意:给你一棵树,然后每个叶子节点会有一家餐馆 你讨厌猫,就不会走有连续超过m个节点有猫的路 然后问你最多去几家饭店题解:dfs代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) me原创 2017-02-28 22:16:53 · 227 阅读 · 0 评论 -
Hdu 5444 Elven Postman dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444题意:给你n个数字,这n个数字是按照二叉搜索树的节点特性给你的,让你建好这棵二叉搜索树,然后,再给出一些询问,让你回答从根节点到某个节点该怎么走? http://www.cnblogs.com/zyf0163/p/4805218.html?tvd 样例解释的题意题解:dfs: http://www原创 2017-02-28 20:17:06 · 340 阅读 · 0 评论 -
hihocoder #1224 : 赛车 dfs
题目链接:http://hihocoder.com/problemset/problem/1224题意:题解:首先我们先dfs出最长链,然后我们再dfs出每一个点能够最长延展多少 然后最后答案就是最长链的长度+最长延展多少就好了代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) me原创 2017-02-28 02:16:23 · 234 阅读 · 0 评论 -
Codeforces Gym 100338I TV Show DFS
题目链接:http://codeforces.com/gym/100338/attachments题意:一个人去参加电视有奖问答的节目,初始奖金为100元,每答对一道问题奖金翻倍,答错奖金清零。此外有一次保险机会:花费C的奖金,下一题可以答对奖金翻倍,答错奖金不清零。 现在给你答对每道题的概率,求最优答题策略的奖金期望。题解:http://blog.youkuaiyun.com/qq_15714857/ar原创 2017-02-28 01:42:59 · 372 阅读 · 0 评论 -
BZOJ 1024: [SCOI2009]生日快乐 dfs
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1024题意:题解:http://www.cnblogs.com/ljh2000-jump/p/6063364.html 直接搜索每次横着切还是竖着切,同时均分成多少块。因为每个人的面积相等,所以注意一下,切成两半后必须要保证两边分成的块数之比要等于面积之比,仔细想想就可以想通了因为对于当前长原创 2017-02-28 00:34:33 · 744 阅读 · 0 评论 -
Codeforces Gym 100650C The Game of Efil DFS
题目链接:http://codeforces.com/gym/100650/attachments题意:每个细胞如果四周细胞太少了,就会孤独而死,如果细胞周围细胞太多了,就会挤死。给你个布局,问你他的上一代布局会有几种。不过这道题的关键在于wrap around这个词,即边界是循环的。题解:数据范围很小,n*m<=16,所以直接dfs出所有的状态 然后再check代码:#include <bits原创 2017-02-27 20:39:56 · 307 阅读 · 0 评论 -
zoj3626 Treasure Hunt I 树上DP
点击打开链接题意:给你一颗树,然后每个点有一个价值,每个边有一个代价,然后问你,从k点出发,花费最多m/2的代价,能够取得最多的价值是多少。思路:树上背包问题,dp[i][j]表示从i点出发,花费j的代价所能取得的最大价值是多少。转移方程为 dp[i][j]=max(dp[i][j],dp[i][m-k-t[i][v]]+dp[v][k]) 就是以u为父节点 走不走v这个点原创 2017-02-23 19:39:54 · 253 阅读 · 0 评论 -
ZOJ 3631 Watashi's BG DFS
点击打开链接思路:本来是一个背包问题,背包容量太大,就T了于是就只有DFS然后搜索,注意剪枝代码:#include using namespace std;typedef long long ll;#define mem(a) memset(a,0,sizeof(a))#define mp(x,y) make_pair(x,y)const int INF = 0x原创 2017-02-23 20:24:10 · 250 阅读 · 0 评论 -
zoj 3620 Escape Time II dfs
题目链接:题意:题解:代码:原创 2017-02-26 15:00:33 · 274 阅读 · 0 评论 -
CDOJ 215 吴队长征婚 DFS+剪枝
题目链接:http://acm.uestc.edu.cn/#/problem/show/215题意:题解:http://www.lai18.com/content/7765203.html 剪枝1:大木棍长度只可能是sum的约数 剪枝2:重复的木棍就可以不用枚举了 剪枝3:每次都从最长的开始枚举代码:#include <bits/stdc++.h>using namespace std;t原创 2017-02-26 13:21:51 · 516 阅读 · 0 评论 -
CDOJ1085 基爷与加法等式 爆搜DFS
题目链接:http://acm.uestc.edu.cn/#/problem/show/1085题意:题解:因为进位,从低位搜代码:http://www.cnblogs.com/qscqesze/p/4489781.html#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset原创 2017-02-26 11:41:41 · 294 阅读 · 0 评论 -
Codeforces Round #245 (Div. 2) C. Xor-tree DFS
题目链接:http://codeforces.com/contest/430/problem/C题意:一棵以1为根节点的树,每个点都是1或者0, 选定一个节点x,当前值取反,x的孙子,孙子的孙子。。。均取反 然后问你最少翻转多少次可以到达目标位置,且翻转的是哪些 点题解一:深度浅的点一定是受影响最小的(根节点只受自己的影响),所以从根依次向下递推处理代码一:#include <bits/stdc原创 2017-02-26 01:16:49 · 244 阅读 · 0 评论 -
Codeforces ZeptoLab Code Rush 2015 B. Om Nom and Dark Park DFS
题目链接:http://codeforces.com/contest/526/problem/B题意:n表示几层边 使从根走到每个叶子所要的花费都相同,问最少得增加多少边权?题解:把每个点与父节点的边 和 这个点 编号相同, 这样就使得每条边的编号是它儿子的编号的2倍 DFS,自底往上,预处理前缀和 然后ans加上左右叶子的差值,然后一直跑DFS就是了代码:#include <bits/std原创 2017-02-25 18:57:37 · 298 阅读 · 0 评论 -
noip 1995 灯的排列问题 排列组合 DFS
题目描述设在一排上有N个格子(N≤20),若在格子中放置有不同颜色的灯,每种灯的个数记为N1,N2,……Nk(k表示不同颜色灯的个数)。 放灯时要遵守下列规则:①同一种颜色的灯不能分开;②不同颜色的灯之间至少要有一个空位置。 例如:N=8(格子数)R=2(红灯数)B=3(蓝灯数) 放置的方法有: R-B顺序原创 2017-02-24 16:16:23 · 2302 阅读 · 0 评论