Problem C. Vera and Canaday Day
STL
GYM
题目链接
题目大意
N次操作,每次在二维坐标系上添加一个整数点(没有重点),以及一个值。每个点可以选择四种双射线中的一种进行发射(上和右,右和下,下和左,左和上),射中的第一个点的值加入这个点的shoot值(每个点最多射中两个点,也可以没有射中点)。问每次加一个点之后,所有点的shoot值的和最大是多少?
数据范围: 1≤N≤105
解答
显然,每加入一个点,最多影响上下左右四个点的shoot值,这四个点的shoot需要重新计算,再重新计算加入的点的shoot值,重新计算的同时维护最大和即可。
找上下左右可以直接用两个map完成。(注意迭代器如果是.begin()的话,再减减会错)
AC代码