ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018)
A. Careful Thief
给出一个数轴和很多互不相交的区间,每个区间都有一个value,意味着区间上的每个点都有value的价值。给出一个长度k,用长度k去覆盖这个数轴,求如何覆盖价值最大。
可以得出一个结论,我们k覆盖的起点或者终点一定是区间的端点。所以在,在对所有不相交的区间进行排序后,枚举从每个区间的头和尾,二分落点,O(1)的的时间求出贡献。
M. Greedy Pirate
- 有n个点,m-1条边,构成一颗树,树上的每条边是双向边,不同的方向有不同的贡献,你需要从a点走到b点,每条边不能经过超过两次,求最大贡献。
- 和codeM的初赛的题非常像,只需要把所有的贡献和减去b到a路径上的贡献和即可。不同的是,这里dp的时候要计算出从根到这个点的贡献和这个点到根的贡献。然后lca计算出b到a的有向路径和即可。