1. 程式人生 > >【每日題解 #12】P3312 [SDOI2014]數表

【每日題解 #12】P3312 [SDOI2014]數表

work 自然 在線 單調遞增 sigma 自動 www. 啊啊啊 卷積

啊啊啊我昨天怎麽沒寫題解wwww

補昨日題解。。。

題目鏈接 : https://www.luogu.org/problemnew/show/P3312

也是莫反 我要把fft留到今天寫

【和zyn小可愛約好了 明天不填完坑就請她cafeking哦

表面題意:很明顯了。。。

有一張N*m的數表,其第i行第j列(1 < =i < =n,1 < =j < =m)的數值為能同時整除i和j的所有自然數之和。

給定a,計算數表中不大於a的數之和。

第一步 : 每個格子裏的那個東西是什麽?

整除i和j的所有自然數之和

↓ ↓

gcd(i, j) 因數和

是 sigma(gcd(i, j))

sigma(x)表示x的因數和

現在的題意:

有一張n * m的數表,給定a,計算數表中不大於a的sigma(gcd(i, j))之和。

蒟蒻認為 看到gcd 又看到計數 就可以往莫反上靠靠了

技術分享圖片

另 這樣在線做會超時的

由於隨著a變大

變化僅為f[] 中的一些值由零變一

所以把詢問按a排序

每次補齊卷積

詳見代碼work部分

代碼:

幾個要註意的細節【大佬自動無視】:

1)sigma不是單調遞增 所以請排序

2)由於本題取模數十分毒瘤 所以隨便爆int~

3)sigma並不是所有項都符合積性函數性質 所以要O(n ln n)篩

4)now註意上界 a可能很大但用不上

【每日題解 #12】P3312 [SDOI2014]數表