我应该创建一个算法,但我不知道从哪里开始。
我有一棵树,例如:
(1) 1
/ | \
2 3 4
/ | \ | \
5 6 7 8 9
|
10
其中一个要素(人)受到感染。我们需要分配多少药物(从0到1)以防止感染k人。如果受感染的孩子的比例将大于药物的数量,那么父母和所有其他孩子也将被感染。不仅最低级别的节点可以在开始时被感染,但是当开始时感染的孩子有了孩子时,那些孩子就不会被感染。该算法应该适用于500000个元素。
(1)树的一些例子:
INPUT: 3(防止感染的人数)
1
/ | \
2 3 4
/ | \ | \
5 6 7 8 9
|
10 <-- The easiest target
Wee see that if 10 will be infected, the only child from 8, then the drugs
should be on level 0.6666666 (2/3) to prevent getting the virus to more than 3
people (because 10 and 8 are infected, but to infect 4 more than (2/3) his
children should be infected and if 4 would be infected then 9 also).
输出: 0.6666666
INPUT: 4(防止感染的人数)
1
/ | \
2 3 4
/ | \ | \
5 6 7 8 9
|
10 <-- The easiest target
If the drug level will be on 0.4444444 (4/9) and the target will be 10 then the
virus will infect (10->8->4->9).
输出 0.4444444