题目大意:
给出一棵树,求出从起点开始走m长度最后回到起点,所能得到的宝藏的最大价值。
思路分析:
通过一次dfs可以得到的是子树到根节点的所有距离的最大值。
现在的问题就是他走完一颗子树可以去另外一颗子树。
所以在回溯到根的时候要统计其他子树上互补距离的最大值。
dp[i] [j] 表示i为根节点,在i的子树中走j步然后回到i所能拿到的最大价值。
转移方程就是
d...
分类:
其他好文 时间:
2014-08-19 10:59:44
阅读次数:
250
题意:有未知根(长度一样)木棒(小于等于n),被猪脚任意的截成n段,猪脚(脑抽了)想知道被截之前的最短长度(我推测猪脚得了健忘症)。
这道题光理解题意就花了好久,大意就是任意根被截后的木棒拼到一起,能不能组成s(《=n)根的相同的木棒,
例:数据 9
5 1 2 5 1 2 5 1 2
可以组成最短为6 的(5+1, 2+2+2)3根木棒。
策略:深搜。
不过要是传统的深搜的话,TL...
分类:
其他好文 时间:
2014-08-18 22:05:13
阅读次数:
189
Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word.
Return all such possible sentences....
分类:
其他好文 时间:
2014-08-18 20:36:22
阅读次数:
231
题目大意:
求出每一个结点距离叶子节点的最大距离。
思路分析:
假设1为树的根。
通过一遍dfs 可以求出每个节点到儿子节点上的叶子节点的最远距离。
然后我们要做的就是如果更新答案。
问题就是如果我们开始求的最大值本来就是一个儿子更新的,如果再深搜的话又会造成重复更新。
所以就记录两个值,最大值和次大值。
然后不断更新这两个值。
#include
#includ...
分类:
其他好文 时间:
2014-08-18 18:44:32
阅读次数:
225
题目链接
题意:有n个石头,编号从1到n,礼物藏在编号为m的石头上,第i次跳2*1-1格,可以向前跳也可以向后跳,问是否能拿到礼物。
思路:简单的DFS。重点是有规律,就是n>=50时,不管m为何值,都是可以抵达m石头,所以只要搜索50以下就可以了。
代码:
#include
#include
#include
#include
using namespa...
分类:
其他好文 时间:
2014-08-18 18:43:02
阅读次数:
283
Tempter of the Bone
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 71121 Accepted Submission(s): 19592
Problem Description
The ...
分类:
其他好文 时间:
2014-08-18 18:37:22
阅读次数:
325
题目链接
题意:给出长度为n的字符串,字符串由‘1’,‘0’,‘’组成,其中‘’可以任意替换为‘1’,‘0’,求不存在连续3个相同子串的字符串的最多个数。
思路:我们可以利用二进制的形式来表示字符串,进行DFS。利用位运算的左移来表示在‘*’位置上放置‘1’,注意在递归的过程中注意判断之否存在3个连续相同的子串。
代码:
#include
#include
#i...
分类:
其他好文 时间:
2014-08-18 16:29:12
阅读次数:
222
1 #include 2 #include 3 #include 4 #include 5 #define N 505 6 using namespace std; 7 8 int g[N][N]; 9 int n, m;10 int vis[N], linker[N];11 bool dfs...
分类:
其他好文 时间:
2014-08-18 15:48:42
阅读次数:
191
题目链接:Coin on the Table一开始想用DFS做的,做了好久都超时。看了题解才明白要用动态规划。设置一个三维数组dp,其中dp[i][j][k]表示在时间k到达(i,j)所需要做的最小改动,那么递推式如下:图片来源:Editorial,其中当从周围的格子可以直接移动到(i,j)时,de...
分类:
其他好文 时间:
2014-08-18 15:43:52
阅读次数:
176