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

Автор Diksha_goyal, история, 3 года назад, По-английски

I'm having a hard time understanding the editorial: https://atcoder.jp/contests/abc221/editorial/2732

for the problem: https://atcoder.jp/contests/abc221/tasks/abc221_e

I want to know how fen-wick tree is actually working in this problem. specially this block

for(int i=0; i<N; i++){
        ans += bit.sum(A[i])*modpow(2,i);
        ans %= mod;
        bit.add(A[i],modpow(div,i+1));
    }

I'm actually very new to CP and have no peers to seek help. So, I directly ask my problem through the blogs. please help me if you have an explanation to get me through it. Thanking you.

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

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

For each $$$A[i]$$$ you need to find sum of all $$$2^{i-j}$$$ for $$$j<i$$$ and $$$A[j]<=A[i]$$$, so in the Fenwick tree we add $$$2^{-i}=modpow(div,i)$$$ to the position $$$A[i]$$$ and we get the all the sums of all $$$j<i\ and\ A[j]<=A[i]$$$ by querying $$$bit.sum(A[i])$$$ but since we need sum of all $$$2^{i-j}$$$ so we mutiply by $$$2^i$$$.

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

I had also learnt Fenwick Tree / BIT recently. Here is the video that helped me a lot :)
https://www.youtube.com/watch?v=RgITNht_f4Q