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

Автор Tobby_And_Friends, история, 10 лет назад, По-английски

I tried to implement the problem using segment tree and multisets. I got a verdict of TLE. How can I optimize my code? Or is there a better solution?

Problem link: http://www.spoj.com/problems/KQUERY2/en/

Solution link: http://ideone.com/gDAmUW

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

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Both N and A[i] are quite small, so maybe something like sqrt decomposition with fenwick tree in each block would pass.

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

You can try using an array instead of the multiset to get O(log^2 N) complexity per query.

Depending on how the multiset is implemented you will get extra O(log N) factor of a big constant.

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

your approach is incorrect

int id = distance(tree[node].begin(), it);

this works in O(n)

»
10 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

I think u should use 2-D BIT

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

You can find the solution here: http://mirror.codeforces.com/blog/entry/18470