摘要: 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3640 题意:Cain被困在一个洞穴里,洞穴有n个出口,每个出口有一个难度值C[i],Cain有一个初始的战斗值f。现在Cain随机选择一个出口,如果f大于出后的难度,那么Cain将会花floor( (1+sqrt(5))/2*C[i]*C[i] )天出去,否则Cain的f将会增加C[i]并且消耗掉一天时间,然后重新尝试。求Cain逃出洞穴天数的期望值。。。 首先用BFS把Cain所有的f值的可能情况求出来,然后就可以列出方程,这里因为期望都是由大的f推... 阅读全文
posted @ 2013-08-17 22:33 zhsl 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:给一颗树求距离每个节点的最远距离。。 每个节点维护两个信息就可以了,f[u][0]和f[u][1],分别表示子树的最大深度和次大深度,然后一边DFS合并子树就行了。。 1 //STATUS:C++_AC_15MS_1016KB 2 #include 3 #include 4 #include 5 //#include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #inc... 阅读全文
posted @ 2013-08-17 16:18 zhsl 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4679 题意:给一颗树,每个边有一个权值,要你去掉一条边权值w剩下的两颗子树中分别的最长链a,b,使得w*Min(a,b)最小。。 说白了就是要枚举每条边,然后在O(1)的时间内求出两颗子树的最长链。因此我们可以考虑用树形DP,首先一遍DFS,对于每个节点维护两个信息,hign[u]:u为根节点的子树的深度,f[u]:u为根节点的子树的最长链。然后还要维护一个hige[i][0]和hige[i][1],分别表示u为根节点的子树,不包括边 i 的深度和最长链。然后再一遍DFS,根据上一节点的信... 阅读全文
posted @ 2013-08-17 15:04 zhsl 阅读(254) 评论(0) 推荐(0) 编辑