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

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

К сожалению, на Codeforces что-то разломалось в отображении сложных формул, и я даже не могу сделать нормальный предпросмотр на свой разбор :( Пока ситуация не исправится, я выкладываю не очень красивые pdf-ки с текстом разбора. К сожалению, пока без исходников авторских решений.

Russian editorial

English editorial

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

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится +33 Проголосовать: не нравится

" ... Pascal triangle and started to investigate properties of binomial coefficients located on the same line. That was the wrong way :)"

This is also a good way, the "Pascal triangle" tells me that we are finding coefficients of xc in (xa + xb)0 + (xa + xb)1 + (xa + xb)2 + ..., then it is easy to see S(C) = S(C-A) + S(C-B).

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

Want to share my solution to E. It's seems to be isomorphic to what is written in the editorial but If I was to implement what is in editorial I would get much harder solution.

Let's root the tree in any vertex, now suppose pair of vertices u,v (au < av). If v is not in the subtree of u then it adds 1 to answer of all vertices in subtree of u. If it in the subtree of to — some direct child of u then it adds 1 to answer of all vertices except vertices in subtree of to which means add 1 everywhere and add -1 to subtree of to

Now process vertices u in decreasing order of its value in groups of vertices of same value: you need to know how many vertices v in each subtree (it's a range query) and outside of subtree of u (it's all others), and add answers to some subtrees. Adding to subtrees is either adding to a range in tin order or may be done offline.

Code