题意:一棵n个节点的有根树,树的边有正整数权,表示两个节点之间的距离,你的任务是回答这样的询问,从根节点出发,走不超过x单位的距离,最多能走多少个节点,节点经过多次算一个,对于每次的询问输出:经过节点数最大的值。 注意题目给出的 i, j,d,其中 j 是 i 的父节点。
思路:树形DP,设 d[ i ][ j ][ k ] 表示以第i个节点为根节点的子树机器人访问j个节点走的最少的路程,k==0表示访问完后又回到i节点,k==1 表示访问完后不回来,
则状态转移方程为:
d[x][j+k][0] ...
分类:
其他好文 时间:
2015-05-13 10:32:41
阅读次数:
127
/** * nodename :选取所有子节点 * / :从根节点选取 * // :从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 * . :选取当前节点 * .. :选取当前节点的父节点 * @ :选取属性 * * * //book :选取所有book子元素 * //ti...
分类:
其他好文 时间:
2015-05-11 14:35:50
阅读次数:
153
题目大意:给出一些字符串表示二叉树,字符串的格式如下(n,s),n表示节点上的数,s表示该节点在哪个位置,问这些字符串能否组成二叉树解题思路:能否组成二叉树,首先需要判断根节点。
接着判断一下其他节点,按层次遍历的顺序来枚举,所以要先排序,按字符串的长度来排序。
如果该节点能是二叉树的节点,那么他的父节点就要存在
判断他的父节点是否存在,只需判断他的前len-1(len表示长度)个字符组成的串...
分类:
其他好文 时间:
2015-05-11 08:56:39
阅读次数:
123
题目描述 这次是使用在线算法解决这个问题。 两个节点的最近公共祖先就是这两个节点的通路上深度最浅的那个节点。 可以通过一遍深搜把树转成数组:每次经过一个节点(无论是从父节点进入还是从子节点返回)时,把它放入数组。同时要记录每个节点在数组中最后一次出现的位置。 使用RMQ-ST算法预先计算2^k长度区...
分类:
其他好文 时间:
2015-05-09 23:18:38
阅读次数:
162
http://acm.hdu.edu.cn/showproblem.php?pid=4035求步数期望,设E[i]为在编号为i的节点时还需要走的步数,father为dfs树中该节点的父节点,son为dfs树种该节点的子节点的集合,kl[i]为被杀掉的概率,ex[i]为逃出的概率mv[i]=(1-kl...
分类:
其他好文 时间:
2015-05-07 14:11:20
阅读次数:
95
题目描述并查集,顾名思义有两个操作:合并和查询。并就是把两个集合合并到一起。查就是查询两个节点是否属于同一个集合。每个节点有一个父节点。一个集合内存在一个唯一的根,判断根的条件就是节点的父节点是不是该节点本身。合并操作就是把一个集合的根接到另一个集合的根上。而查询操作就是找两个对象是否有同一个根。查...
分类:
其他好文 时间:
2015-05-06 22:36:17
阅读次数:
162
考察并查集,判断是否成环(是否有同样的父节点),判断连通(是否只有一个根节点)
#include
#define maxn 100000+5
using namespace std;
int a,b;
int flag;
int father[maxn];
int sign[maxn];
void ready()
{
for(int i=1;i<maxn;i++) father[i]=i,si...
分类:
其他好文 时间:
2015-05-05 23:55:25
阅读次数:
302
题目大意:给定一棵有根树,每个点上有一些樱花,现在要求删除一些节点,删除节点的樱花和子节点都会连到父节点上,要求每个节点的樱花数+子节点数不超过mm,求最多删多少个节点这数据范围也只能贪心了吧= =
令fif_i为以节点ii为根的子树中能删除的最多节点(ii节点不删),gig_i为删除最多节点的情况下ii号节点的最小负重
那么首先对于每个节点我们对于所有的子节点为根的子树尽量删,然后考虑如何删除...
分类:
其他好文 时间:
2015-05-05 22:01:27
阅读次数:
163
给出N个点,和N-1个边关系,可以对点进行涂色,涂色后该点和其相连的点都被染色,问染色最少的点将所有点全部覆盖
dp[cur][0]+=Min(dp[next][2],dp[next][1]); 父节点被涂色,当前节点不涂
dp[cur][2]+=Min(dp[next][2],dp[next][1]);当前节点被涂色
dp[cur][1]+=Min(dp[next][0],dp[next]...
分类:
其他好文 时间:
2015-05-05 21:53:33
阅读次数:
177
每个节点有权值,子节点和父节点不能同时选,问最后能选的最大价值是多少?
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long int64;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);...
分类:
其他好文 时间:
2015-05-01 14:50:24
阅读次数:
124