@M1saki
2017-07-19T01:21:27.000000Z
字数 887
阅读 1268
acm
2017年7月
hdu
个人训练
rank | ac/all | A | B | C | D | E | F | G | H | I | J | K |
---|---|---|---|---|---|---|---|---|---|---|---|---|
- | 7/11 | O | Ø | . | O | O | . | . | Ø | Ø | Ø | . |
. | 尚未通过 | O | 当场通过 | Ø | 赛后通过 |
---|
比较一下走楼梯和走电梯花费的时间大小即可
假设u和v的LCA为p, 则
因此可以预处理出1到所有点的路径值,排个序,那么所有值之和,即是第一部分的值,其中。
考虑第二部分的值,处理出每个点的每个分支的节点数,那么
dp[i]:表示1~i位可以获得的最大的愉悦值
转移:
注意读题!!!
考虑每个数的贡献,举个栗子:
考虑数字1,它在任何不含数字2的子串中都有贡献,因此1的贡献为:
其他数字也同理。
题意有点问题。
最终求的是在占领村庄数尽可能多的情况下,获得魔法碎片的最大值。
因此可以把村庄按c-b从大到小排序,用set维护a。
对于每一个村庄,在set中二分出恰好大于其防御值b的a,重复操作,可以得到最后可占领的村庄数。
最后根据可占领的村庄数,每次用尽可能大的a去匹配即可。
首先明确一点,最多只能有1个人杀了大于1只怪。
把所有人按从0只怪到1只怪的收益,即a+b-c排序,这样,对于每个b,二分出大于当前b的a+b-c的位置,那么从这个位置开始给予一个怪都能更优。枚举每个b,取最大值即可。