题目要求\(\prod_{i=1}^{n}\prod_{j=1}^{m}f(\gcd(i,j))\),核心思路是利用恒等式\([n=1]=\sum\limits_{d|n}\mu(n)\)对原式进行化简:
\[\begin{align*}
\prod_{i=1}^{n}\prod_{j=1}^{m}f(\gcd(i,j))&=\prod_{d=1}^{n}f(d)^{\sum\limits_{i=1}^{n/d}\;\sum\limits_{j=1}^{m/d}[\gcd(i,j)=1]}\\
&=\prod_{d=1}^{n}f(d)^{\sum\limits_{g=1}^{n/d}\;\mu(g)\lfloor\frac{n}{dg}\rfloor\lfloor\frac{m}{dg}\rfloor}\\
&=\prod_{T=1}(\prod_{d|T}f(d)^{\mu(\frac{T}{d})})^{\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor}
\end{align*}
\]
可以在\(\Omicron(n\ln n)\)的时间复杂度内算出\(\prod_{d|T}f(d)^{\mu(\frac{T}{d})}\)的前缀积,然后整除分块统计即可,总时间复杂度\(\Omicron(n\ln n+T\sqrt{n}\log n)\).
首先展开所求式子:
\[\begin{align*}a=\frac{\sum\limits_{i=L}^{R}(x_{i}-\overline{x})(y_i-\overline y)}{\sum\limits_{i=L}^R(x_i-\overline x)^2}&=\frac{\sum\limits_{i=L}^{R}x_iy_i-x_i\overline x-y_i\overline y+\overline x\times\overline y}{\sum\limits_{i=L}^R {x_i}^2-2x_i\overline x+{\overline x}^2}\\&=\frac{\sum\limits_{i=L}^{R}x_iy_i-\overline x\sum\limits_{i=L}^{R}x_i-\overline y\sum\limits_{i=L}^{R}y_i+\overline x\times\overline y\times(R-L+1)}{\sum\limits_{i=L}^{R}{x_i}^2-2\overline x\sum\limits_{i=L}^{R}x_i+{\overline x}^2\times(R-L+1)}\\&=\frac{\sum\limits_{i=L}^{R}x_iy_i-\overline x\sum\limits_{i=L}^{R}x_i-\overline y\sum\limits_{i=L}^{R}y_i+\overline x\times\overline y\times(R-L+1)}{\sum\limits_{i=L}^{R}{x_i}^2-2\overline x\sum\limits_{i=L}^{R}x_i+{\overline x}^2\times(R-L+1)}\end{align*}
\]
考虑维护\(x_iy_i,{x_i}^2,x_i,y_i\)四个量的区间和,其中后两个量用线段树很好维护。
考虑如何维护\({x_i}^2\),假设现在\(x_i\)增加了\(k\):
\[\begin{align*}(x_i+k)^2-{x_i}^2&={x_i}^2+2x_ik+k^2-{x_i}^2\\&=2x_ik+k^2\end{align*}
\]
每次对于一个区间加\(k\)的操作,只需将\({x_i}^2\)加上\(2k\sum_{i=L}^{R}x_i+k^2\times(R-L+1)\)即可。
我们再来维护\(x_iy_i\):
\[(x_i+k)y_i-x_iy_i=x_iy_i+ky_i-x_iy_i=ky_i\\x_i(y_i+k)-x_iy_i=x_iy_i+kx_i-x_iy_i=kx_i
\]
打懒标记记录当前的\(x_iy_i\)分别要加的\(x_i,y_i\)的系数即可。
时间复杂度\(\Omicron((n+m)\log n)\).
好吧我漏看了3操作,这题确实是shit题
等我A几个水题回头再来收拾它
首先将式子展开:
\[\sum_{i=1}^n(x_i-y_i)^2=\sum_{i=1}^{n}{x_i}^2-2x_iy_i+{y_i}^2
\]
现在考虑将\(x_i\)加上\(c\)之后的变化:
\[\begin{align*}&\sum_{i=1}^{n}{(x_i+c)}^2-2(x_i+c)y_i+{y_i}^2-({x_i}^2-2x_iy_i+{y_i}^2)\\=&\sum_{i=1}^n2c(x_i-y_i)+c^2\end{align*}
\]
不难看出无论如何旋转手环,加上\(c\)的增量相同,并且这是一个开口向上的二次函数,所以\(f(c)_{min}=f(\frac{\sum\limits_{i=1}^{n}y_i-x_i}{n})\).
然后我们考虑如何处理旋转,首先不管如何旋转,\(\sum\limits_{i=1}^{n}{x_i}^2+{y_i}^2\)都是定值,单独统计就好,然后发现\(x_i\)和对应的\(y_i\)下标之差都是相同的,所以把\(y_i\)翻转一下,对应下标之和相同,这让我们联想到了卷积,由于是环状结构,所以再将\(y_i\)复制一份,破环成链即可,最后变成了如下形式:
\[f(d)=\sum_{i=0}^{n-1}x_iy_{2n-i-d-1},d\in[n,2n-1]
\]
所以将处理后的\(x_i\)和\(y_i\)直接卷起来,然后取\(f(d)\)的最大值即可。
使用一次\(\operatorname{FFT}\)即可快速统计出答案,时间复杂度\(\Omicron(n\log n)\).