DFS
Dilly__dally
这个作者很懒,什么都没留下…
展开
-
OpenJ_百练1321
num--忘了写。。#include<bits/stdc++.h> using namespace std; int m[10][10],vis[10]; int n,k; int cas=0; int num; void dfs(int c) { if(num==k) { cas++; return ; } else i...原创 2018-05-05 20:37:53 · 144 阅读 · 0 评论 -
POJ 2386
题意:找连通的积水(上下左右和对角线都算)的总数。思路:从任意的W开始,不停的把邻接的部分用'.'代替,1次DFS就可以把与W连通的全部换成‘.’,总共进行的DFS次数就是结果。#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<s...原创 2018-05-16 11:33:58 · 177 阅读 · 0 评论 -
HDU 1241(DFS判断连通块个数)
水题。 #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f #define ll long long const int maxn=200005; const double eps=1e-8; const double PI = acos(-1.0); #define lowbit(x) (x&am...原创 2018-08-10 00:17:10 · 205 阅读 · 0 评论 -
UVA 291(DFS)
题意:一笔画画出圣诞老人的房子,并按字典序输出。 思路:从1点DFS遍历图(八条边需要9画) #include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f #define ll long long const int maxn=200005; const double eps=1e-8; const dou...原创 2018-08-06 15:34:38 · 222 阅读 · 0 评论 -
POJ 1321(DFS)
水题。 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<vector> #include<stack> #include<bitset&g原创 2018-08-07 23:49:23 · 167 阅读 · 0 评论 -
HDU 6446 Tree and Permutation(找规律+树形DP)
题意: 给一棵N个点的树,对应于一个长为N的全排列,对于排列的每个相邻数字a和b,他们的贡献是对应树上顶点a和b的路径长,求所有排列的贡献和。 思路:对于任意的xy,其在全排列中相邻的组合数是(n-1)!*2,这样题目意思就明了了,求一棵树中任意两点距离和,边上有权重。贡献思维,看每条边对答案的贡献。一条边被n1*n2次走过,n1,n2分别为边两边的子树的节点数。每条边两端的点数的计算,实际上...原创 2018-08-27 23:47:37 · 209 阅读 · 0 评论 -
GCPC 2013 D Kastenlauf(DFS)
题意:在一个矩形城市中,有一个人要从一点到达另一点,而且这个人每隔50m就要喝一瓶饮料,要不然就会死,路途中有若干个商店提供饮料,出发时该人身上有20瓶饮料,他经过商店时最多可以买20瓶,问这个人能否到达目的地(这个人要按照Manhattan距离走,不能走对角线)。 思路:用一个vis数组表示每个点是否被访问过,如果最后DFS完vis[目的地]=1,那么能,否则不能。 注意:这个题不能回溯,也...原创 2018-09-05 21:46:45 · 175 阅读 · 0 评论 -
HDU 1010 Tempter of the Bone (DFS+剪枝(奇偶剪枝原理))
题意: 根据地图,'S'为开始位置,'D'为门的位置,' . '为空地,'X'为墙,不能经过, 问:在指定的时间,是否能到达'门'的位置. 注意:路不可以重复经过,时间也要刚好是 t ,不能少. 思路: 因为是查找距离为t的路径,所以不能用bfs。朴素的dfs肯定会TLE,这里需要剪枝: 1.奇偶剪枝。两点的曼哈顿距离是最短距离,任意一条路径长度要与最短距离同奇偶,所以两者差值要为偶数...原创 2018-11-24 21:02:35 · 255 阅读 · 0 评论 -
CodeForces - 1099D(树上贪心+DFS)
题意: 给出一棵有根树,根节点编号为 1,每个节点存在一个权值 a[x],同时还有一个 s[x]为从根节点到节点 x 这条路径上的所有节点的 a[x]之和。此时,擦除了所有深度为偶数的节点的 s[x](根节点深度为 1)。然后要求反推出所有节点的 a[x],使得所有节点的 a[x]之和最小。 思路: 对于叶子结点来说,权值为0就行。对于s为-1的结点来说,a[x]=s[fa]-s[x],要使...原创 2019-01-22 13:35:04 · 404 阅读 · 0 评论