算法:hdu 4044 GeoDefense (树形dp | 多叉树转二叉树)2014-01-01 csdn shuangde800题意这是一个塔防游戏,地图是一个n个编号为1~n的节点的树, 节点1是敌人的基地,其他叶子 节点都是你的基地。敌人的基地会源源不断地出来怪兽,为了防止敌人攻进你的基地,你可以选择造塔。每个节点最多只能造一个塔,且节点i可以有ki种塔供你选择,价钱和攻击力分别为price_i, power_i攻击力power_i,效果是让敌人经过这个节点时让敌人的血减少power_i点。
那么从敌人的基地到你 的任意一个基地的路径,这条路径上的所有塔的攻击力之和,就是这个基地的抵抗力。敌人的攻击路径是 不确定的,为了保护你的所有基地,你要确定所有基地中抵抗力最低的一个。
你只有数量为m的钱 ,问最佳方案,可以抵挡敌人的最大血量是多少?也就是,让所有基地中抵抗力最低的一个的值尽量大,最大是多少?思路:方法一: 多叉转二叉把多叉树先转化成“左儿子,右兄弟”的表示 方法。会发现形成这样一种结构图:多叉树:

转化成“左儿子,右兄弟”的 二叉树: