題目是要求一段數字S, Bij=Si*Sj,矩陣B的任意子矩陣和有多少等於a。
觀察之後發現,某一個子矩陣的和等於他的邊(數列S)的乘積,有點類似(A+B)的平方之類的。
所以我每舉N平方的S的區間和,如果是a的因數就把 S[a]++,最後再跑一次 S[i]S[a/i],也就是因數分解a的感覺。如果a是0就S[i]S[0]2,因為不是0時會跑到兩次,但是0只會跑到一次所以要2,還要記得加上S[0]*S[0]。
注意範圍,答案最大的狀況是 (4000^2)^2
1 |
|
題目是要求一段數字S, Bij=Si*Sj,矩陣B的任意子矩陣和有多少等於a。
觀察之後發現,某一個子矩陣的和等於他的邊(數列S)的乘積,有點類似(A+B)的平方之類的。
所以我每舉N平方的S的區間和,如果是a的因數就把 S[a]++,最後再跑一次 S[i]S[a/i],也就是因數分解a的感覺。如果a是0就S[i]S[0]2,因為不是0時會跑到兩次,但是0只會跑到一次所以要2,還要記得加上S[0]*S[0]。
注意範圍,答案最大的狀況是 (4000^2)^2
1 |
|