Блог пользователя Mano

Автор Mano, история, 6 лет назад, По-русски

How to solve F, H, J, L?

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

J can be solved with Mo. Let's firstly solve the x < y queries, then reverse the field and solve the rest. The answer for the query is the sum of suffix maximums + suf[x] (suffix maximum from x to y) multiplied by the distance to the rightmost element to the left to x greater than suf[x]. Code the kind of Mo where you only add elements. Now you can either add element to the right of the previous query, that is just maintaining a stack with the best values, or add element to the left, that is adding a new suffix maximum. The first part of the sum for the query is calculated, the second part can be derived with the use of some kind of precalc and suf[x].