P3700 [CQOI2017]小Q的表格(反演、分块)
P3700 [CQOI2017]小Q的表格
給定一個大小為n×nn \times nn×n的表格,初始時i,ji, ji,j位置上填的是f(i,j)=i×jf(i, j) = i \times jf(i,j)=i×j,有mmm個操作,每次操作給定a,b,x,ka, b, x, ka,b,x,k,把格子a,ba, ba,b上的值改成xxx,求∑i=1k∑j=1kf(i,j)\sum\limits_{i = 1} ^{k} \sum\limits_{j = 1} ^{k} f(i, j)i=1∑k?j=1∑k?f(i,j)。
我們定義,在任何時刻,表格里的值都滿足f(i,j)=f(j,i),j×f(i,i+j)=(i+j)×f(i,j)f(i, j) = f(j, i), j \times f(i, i + j) = (i + j) \times f(i, j)f(i,j)=f(j,i),j×f(i,i+j)=(i+j)×f(i,j)。
b×f(a,a+b)=(a+b)×f(a,b)f(a,a+b)a×(a+b)=f(a,b)a×bf(a,b)a×b=f(b,a%b)b×a%bf(a,b)a×b=f(d,d)d×d,d=gcd?(a,b)f(a,b)=a×bd×df(d,d)b \times f(a, a + b) = (a + b) \times f(a, b)\\ \frac{f(a, a + b)}{a \times (a + b)} = \frac{f(a, b)}{a \times b}\\ \frac{f(a, b)}{a \times b} = \frac{f(b, a\ \%\ b)}{b \times a\ \%\ b}\\ \frac{f(a, b)}{a \times b} = \frac{f(d, d)}{d \times d}, d = \gcd(a, b)\\ f(a, b) = \frac{a \times b}{d \times d} f(d, d)\\ b×f(a,a+b)=(a+b)×f(a,b)a×(a+b)f(a,a+b)?=a×bf(a,b)?a×bf(a,b)?=b×a?%?bf(b,a?%?b)?a×bf(a,b)?=d×df(d,d)?,d=gcd(a,b)f(a,b)=d×da×b?f(d,d)
考慮統計答案:
∑i=1n∑j=1nf(i,j)∑d=1nf(d,d)∑i=1nd∑j=1ndij[gcd?(i,j)=1]∑d=1nf(d,d)(∑i=1ndi∑j=1ij[gcd?(i,j)?1]?1)∑d=1nf(d,d)∑i=1ndi2?(i)g(n)=∑i=1ni2×?(i)\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} f(i, j)\\ \sum_{d = 1} ^{n} f(d, d) \sum_{i = 1} ^{\frac{n}ze8trgl8bvbq} \sum_{j = 1} ^{\frac{n}ze8trgl8bvbq} ij[\gcd(i, j) = 1]\\ \sum_{d = 1} ^{n} f(d, d) \left(\sum_{i = 1} ^{\frac{n}ze8trgl8bvbq} i \sum_{j = 1} ^{i} j[\gcd(i, j) - 1] - 1\right)\\ \sum_{d = 1} ^{n} f(d, d) \sum_{i = 1} ^{\frac{n}ze8trgl8bvbq} i ^ 2 \phi(i)\\ g(n) = \sum_{i = 1} ^{n} i ^ 2 \times \phi(i)\\ i=1∑n?j=1∑n?f(i,j)d=1∑n?f(d,d)i=1∑dn??j=1∑dn??ij[gcd(i,j)=1]d=1∑n?f(d,d)???i=1∑dn??ij=1∑i?j[gcd(i,j)?1]?1???d=1∑n?f(d,d)i=1∑dn??i2?(i)g(n)=i=1∑n?i2×?(i)
容易發現g(n)g(n)g(n)可以線性篩得到,所以我們只要動態維護f(d,d)f(d, d)f(d,d)的前綴和即可,考慮用分塊維護前綴和,滿足n\sqrt nn?修改,O(1)O(1)O(1)查詢。
總結
以上是生活随笔為你收集整理的P3700 [CQOI2017]小Q的表格(反演、分块)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P3242 [HNOI2015] 接水果
- 下一篇: Three.js(十四)—— 模型文件加