题解UVa12186 工人的请愿书
刘汝佳大法好!
设表示让号员工给上级发信至少需要多少个工人。
那么假设的子节点个数为个,则至少需要个直接下属发信才可以让号员工给上级发信(注意以上公式括号内的是为了防止为的倍数而减一的)。
则我们更新的方法是:将的个下属中值最小的个做和,即可保证是最小的。
最后答案就是。
1 |
|
设dp(u)表示让u号员工给上级发信至少需要多少个工人。
那么假设u的子节点个数为k个,则至少需要c=(kT−1)/100+1个直接下属发信才可以让u号员工给上级发信(注意以上公式括号内的−1是为了防止kT为100的倍数而减一的)。
则我们更新dp(u)的方法是:将u的k个下属中dp值最小的c个做和,即可保证dp(u)是最小的。
最后答案就是dp(0)。
1 | #include <bits/stdc++.h> |