天天看点

codeforces GYM 101431B (STL)

Problem C. Vera and Canaday Day

STL

GYM

题目链接

题目大意

N次操作,每次在二维坐标系上添加一个整数点(没有重点),以及一个值。每个点可以选择四种双射线中的一种进行发射(上和右,右和下,下和左,左和上),射中的第一个点的值加入这个点的shoot值(每个点最多射中两个点,也可以没有射中点)。问每次加一个点之后,所有点的shoot值的和最大是多少?

数据范围: 1≤N≤105

解答

显然,每加入一个点,最多影响上下左右四个点的shoot值,这四个点的shoot需要重新计算,再重新计算加入的点的shoot值,重新计算的同时维护最大和即可。

找上下左右可以直接用两个map完成。(注意迭代器如果是.begin()的话,再减减会错)

AC代码