[Summary] how different convolution carry out his
md I tmd convolution and construction dysregulated day, I come to smy && higher learning brother, summarize how different forms of convolution
- equal sign
And is constant
From 0 to traverse the whole boundary
\ [a_i = \ sum_ {j
= 0} ^ i b_j c_ {ij} \] simplest form, is the most basic form of\(j\in[l,r]\cap [0,i]\)
At this time, since the \ (J \) such a restriction, i.e. meaning \ (B [] \) only \ ([l, r] \ ) has a value, so that the other b [i] = 0 to, nothing difficult of
The difference is constant
Full traverse
\ [a_i = \ sum_ {j
= i} ^ n b_ {ji} a_j \] respectively \ (ni, nj \) Alternatively \ (i, j \) to
\ [a_ {i} = \ sum_ {nj = ni} ^ n b_
{ij} a_j \] At this time, you can find \ (NIJ J = Ni + \) , that form the symbol head. This can be seen as \ (I \) values at the position actually \ (B_ {Ni} \) , it is a specific operationstd::reverse(b,b+n+1)
, and then after convolution together we get \ (a_ {ni} \) we remember tostd::reverse(a,a+n+1)
note thesestd::reverse()
bounds, these upper and lower bounds mistake is equivalent to direct convolution it is wrong, to attract attention!\(j\in[l,r]\cap [0,i]\)
Similarly
Same over No.
It is the same reason, the length of the maintenance time can be seen as \ (<\ mod {} \ ) array.