
dfs
Bahuia
软件工程博士
展开
-
51Nod - 1489 dfs
题意: 哈利喜欢玩角色扮演的电脑游戏《蜥蜴和地下室》。此时,他正在扮演一个魔术师。在最后一关,他必须和一排的弓箭手战斗。他唯一能消灭他们的办法是一个火球咒语。如果哈利用他的火球咒语攻击第i个弓箭手(他们从左到右标记),这个弓箭手会失去a点生命值。同时,这个咒语使与第i个弓箭手左右相邻的弓箭手(如果存在)分别失去b(1 ≤ b 因为两个端点的弓箭手(即标记为1和n的弓箭手)原创 2016-12-29 11:10:19 · 414 阅读 · 0 评论 -
51Nod - 1535 图论基础 + 搜索环
题意: 很久很久以前的一天,一位美男子来到海边,海上狂风大作。美男子希望在海中找到美人鱼,但是很不幸他只找到了章鱼怪。 然而,在世界的另一端,人们正在积极的收集怪物的行为信息,以便研制出强大的武器来对付章鱼怪。由于地震的多发,以及恶劣的天气,使得我们的卫星不能很好的定位怪物,从而不能很好的命中目标。第一次射击的分析结果会反映在一张由n个点和m条边组成的无向图上。现原创 2017-02-05 09:50:10 · 791 阅读 · 0 评论 -
51Nod - 1416 搜索环
题意: 福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”。基础级别的时候是在一个n×m单元上玩的。像这样: 每一个单元有包含一个有色点。我们将用不同的大写字母来表示不同的颜色。 这个游戏的关键是要找出一个包含同一颜色的环。看上图中4个蓝点,形成了一个环。一般的,我们将一个序列 d1,d2,...,dk 看成一个环,当且仅当它符合下列条件时: 1原创 2017-02-08 18:51:10 · 507 阅读 · 0 评论 -
ZOJ - 1492 dfs剪枝求最大团
题意: 要求一个不超过50个点的图中最大完全子图(团)的大小。 思路: dfs + 剪枝 + 记忆化 学习了这篇博客的思路:http://www.cnblogs.com/zhj5chengfeng/archive/2013/07/29/3224092.html 所谓团,就是一个完全子图,也就是在一个图中找到一个子图,满足任意子图中两个点都有边相连,最大团顾名思义就是点最多的团。 N原创 2017-03-06 16:27:59 · 1044 阅读 · 0 评论 -
HDU - 5952 暴力dfs
题意: 在一个图中计算大小为s的团有多少个。 思路: 直接暴力搜索,但是要注意搜的过程很显然会出现重复,这时候我们搜索的时候其实可以选择每次新加入的点要比当前的已经完成的子图中的点要大,这样就可以避免枚举的时候出现重复,既然这样可行,我们可以换一种思路,直接在建图的时候只保存由小点指向大点的单向边即可,很巧妙。 代码: #include #include #include #inc原创 2017-03-06 16:37:38 · 503 阅读 · 0 评论 -
HDU - 3585 最大团 + 二分
题意: 给出n个点,要求在其中找到k个点,使得任意两个点的最短距离最大。 思路: 最大化最小值,很明显要二分答案判断是否可行,关键是判断可行的方案,直接对于这n个点求一个最大团,这个团满足任意两个点的距离都要大于等于当前二分的答案,看这样求出的最大团的大小是否大于等于k。 代码: #include #include #include #include #include原创 2017-03-06 18:25:30 · 399 阅读 · 0 评论 -
EOJ - 13 dfs
题意:经典的数独游戏,6*6的方格中填数字1~9,要保证每行梅列以及2*3的范围内不能存在重复的数,这道题特殊在于有些格子内要填两个数,而且要保证左边的数小于右边的数,任意输出一种方案即可。 方格示意图: 思路:直接dfs爆搜,每次填一个格子就判断是否符合要求,直到填满格子。代码:#include <bits/stdc++.h> using namespace std;int g[10][10]原创 2017-04-08 12:21:54 · 292 阅读 · 0 评论