DTOJ 4858. 矩陣求和

題解

給你一個n×\timesm的矩陣,行列從1開始標號,第iijj列的值是(i1)m+j(i-1)*m+j。現在要求你實現以下操作。

1、交換兩行。

2、交換兩列。

3、求一個子矩陣的做k次前綴和之後的和,對109+710^9+7取模

對於100%的數據,保證1n,m,q105,0k101\leqslant n,m,q\leqslant 10^5,0\leqslant k\leqslant 10

測試點 n,m,qn,m,q\leqslant kk
0 200200
1 50005000 =0=0
2,3 50005000 沒有修改
4 50005000
5,6 =0=0
7 沒有修改
8,9

題解

考慮做kk次前綴和的過程,如果是一維的話就是每個位置每次可以貢獻到它或它之後的任意一個位置,求kk次之後貢獻到nn的方案數;而二維的話兩維是互相不干擾的所以就是兩個組合數相乘。對於iijj列本身的值,我們把它看做ai+bja_i+b_j,兩者分開算,列出式子把組合數化簡一下,問題剩下求一個包含x2x_2iiiix1x1x2x_2)的二元多項式,而兩者的次數都是kk級別的,把它展開得到每一項的係數,用樹狀數組維護aiika_i*i^k的前綴和即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章