今天来谈一下dfs的入门,以前看到的dfs入门,那真的是入门吗,都是把dfs的实现步骤往那一贴,看完是知道dfs的步骤了,但是对于代码实现还是没有概念。今天准备写点自己的心得,真的是字面意思--入门。DFS,即深度优先搜索,是一种每次搜索都向尽可能深的地方去搜索,到达尽头时再回溯进行其他结点去搜索的...
分类:
其他好文 时间:
2014-07-19 23:08:25
阅读次数:
305
Prime Ring ProblemTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25700Accepted Submission(s): 114...
分类:
其他好文 时间:
2014-07-19 22:23:15
阅读次数:
211
第一次dfs求出每个点的最大和次大长度,由下向上更新第二次由上向下更新。第二次dfs是为了处理某个点,最大长度不是向子节点延伸的长度,而是从父亲节点过来的 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include ...
分类:
其他好文 时间:
2014-07-19 18:31:43
阅读次数:
243
转载自:http://acm.hdu.edu.cn/forum/read.php?tid=6158sample input:4 4 5S.X...X...XD....问题:(1):在发现当前节点无法到达时,这点弹出栈,并且把这点的标记重新刷为'.'(2):如何在dfs中既要保证到达又要使时间正好呢?...
分类:
其他好文 时间:
2014-07-19 18:31:08
阅读次数:
335
链接:http://vjudge.net/problem/viewProblem.action?id=49408
题意:在平面内给出若干个矩形,求出它们能将整个平面分成多少份。
思路:刚开始一眼看到觉得是几何题,但是发现最多只有50个矩形后,灵光一闪觉得直接离散化再暴力就可以了。把所有矩形的x,y坐标分别离散化,并且为了防止出现离散的太近导致矩形之前没有空隙的情况,将所有点离散化的坐标记作偶数...
分类:
其他好文 时间:
2014-07-19 18:24:19
阅读次数:
222
泛泛解:D:求K大,如果我们二分枚举,如果有O(N)的方法统计,就OK了,先枚举,我们对每一行的统计能够达到O(1),所以很简单了。E:有思路,但是代码能了太弱了,DFS学得太水。 我们发现其实就是一个深度递归结构,只有100000个元素,所以这是一个突破点。 先求出所有因子,然后枚举因子,出现的话...
分类:
其他好文 时间:
2014-07-19 17:12:13
阅读次数:
244
直接枚举计算就行;#include#include#include#define maxn 22using namespace std;double ans[maxn],p[maxn];bool vis[maxn];int n,r;void dfs(int cur,int cot){ if(c...
分类:
其他好文 时间:
2014-07-19 15:37:13
阅读次数:
158
class Solution {public: vector generateParenthesis(int n) { string str; vector res; dfs(n, 0, 0, str, res); return res;...
分类:
其他好文 时间:
2014-07-19 15:28:21
阅读次数:
207
题意:一个送披萨的,每次送外卖不超过10个地方,给你这些地方之间的时间,求送完外卖回到店里的总时间最小。解法一: 这个n不大即使是NP问题也才1E6多一些所以可以dfs();具体的回溯方法结合dance link 就可以; #include #include #include #include .....
分类:
其他好文 时间:
2014-07-19 14:12:38
阅读次数:
148
题目:codeforces 448CPainting Fence
题意:n个1* a [ i ] 的木板,把他们立起来,变成每个木板宽为1长为 a [ i ] 的栅栏,现在要给栅栏刷漆,刷子宽1,每一刷子可以刷任意长,现在让你求最少需要多少刷子?
分析:题目看似没有头绪,仔细分析的话其实很简单
首先,我们假如每次都刷一个木板,即一竖行,那么需要n次刷完,可见这是一个a...
分类:
其他好文 时间:
2014-07-19 02:35:45
阅读次数:
184