类欧几理得/万能欧几理得学习笔记

给定有关于 \(x\) 的函数 \(y_{|x}=\lfloor \frac{px+r}{q}\rfloor(p,r\ge 0, q>0)\)。它表达一条直线 \(L\) 下的整点。

万能欧几理得:

给定两个函数 \(f(x),g(y)\)。它们满足通过维护少量的值可以实现 \(f(x)\to f(x+1), g(y)\to g(y+1)\)线性递推。以 \(O(c\log n)\) 复杂度回答 \(\sum_{x=0}^nf(x)g(y)\)。其中 \(c\) 为单步递推的时间。

描述问题

考虑使用线性代数的形式表达求解过程。

沿 \(x\) 轴正方向扫描 \(L\),构造向量 \(V\) 表达当前的 \(f(x)g(y)\) 和前缀和 \(\sum_{i\le x}f(i)g(y_i)\) 以及一些其他的递推信息。

  1. \(L\) 碰到 \(y\) 坐标为整数的水平直线,更新 \(g(y),..\)

  2. \(L\) 碰到 \(x\) 坐标为整数的竖直直线,更新 \(f(x),..\),并将现在的 \(f(x)g(y)\) 加入答案前缀里。

显然 1. 2. 都可以用矩阵表达出来,不妨依次记作矩阵 \(U,R\)。则我们只需要在 \(L\) 碰到水平线时令 \(V \leftarrow V\times U\),碰到竖直线时令 \(V \leftarrow V\times R\)。在扫描完 \(x=n\)\(V\) 里的前缀和就是答案。

\(\color{red}{\Delta}\) 注意当 \(L\) 刚好穿过竖线和横线的交点,先统计横线贡献再计算答案。

加速维护

根据上文对问题的描述不妨称问题为

\[f(p,q,r,n,U,R) \]

其中前四者为刻画求解范围的整数,后两者为刻画求解内容的矩阵。

\(p\ge q\)

\[\begin{aligned} \lfloor \frac{px+r}{q}\rfloor =& \lfloor \frac{p}{q}\rfloor x + (\lfloor \frac{px+r}{q}\rfloor - \lfloor \frac{p}{q}\rfloor x) \\ =& \lfloor \frac{p}{q}\rfloor x + (\lfloor \frac{px+r}{q}\rfloor - \frac{px-(p \bmod q)x}{q}) \\ \ =& \lfloor \frac{p}{q}\rfloor x + \lfloor \frac{(p \bmod q)x+r}{q}\rfloor \\ \end{aligned} \]

这个式子表示可以将 \(x-1\to x\) 过程中 \(y\) 的增量看作 \(\lfloor \frac{p}{q}\rfloor\)\(\lfloor \frac{(p \bmod q)x+r}{q}\rfloor-\lfloor \frac{(p \bmod q)(x-1)+r}{q}\rfloor\) 两部分。

第一部分贡献的统计并入 \(R\) 矩阵,第二部分可以表示为一条新直线。

可以得到:

\[f(p, q, r, n, U, R)=f(p \bmod q,q,r,n,U,U^{\lfloor\frac{p}{q}\rfloor}R) \]

\(p< q\)

考虑通过 更换扫描维度 将问题转化为上面一种情况。

扫描 \(y\) 轴,考虑给定 \(y\),解出满足 \(\lfloor \frac{px+r}{q}\rfloor < y\)\(x\) 的范围:得到 \(x \le \lfloor \frac{qy-r-1}{p}\rfloor\)

\(\color{red}{\Delta}\) 注意这里 \(\lfloor \frac{px+r}{q}\rfloor < y\) 不能取等的原因:\(L\) 经过交点先统计横直线贡献。

\(y\) 扫描到的最大值对应原函数 \(x=n\)\(y\) 的值:\(m= \lfloor \frac{pn+r}{q}\rfloor\)

形式和边界上的小问题:

  • \(m=0\),直接返回 \(R^n\)

  • 统计所有的 \(R\)

    我们需要补上 \(m\) 以后撞到的竖线,对应矩阵:\(R^{n-\lfloor \frac{qm-r-1}{p}\rfloor}\)

  • 保证新的余数是正数。

    考虑将第一个 \(U\) 和其之前的 \(R\) 拿出来单独计算,对应矩阵为 \(R^{\lfloor \frac{q-r-1}{p}\rfloor}U\),将直线上面的部分平移下来,得到直线 \(x=\lfloor \frac{q(x+1)-r-1}{p}\rfloor\)

故可以得到:

\[f(p ,q, r, n, U, R) =\\ \begin{cases} R^{\lfloor \frac{q-r-1}{p}\rfloor}U\times f(q,p,(q-r-1)\bmod p,m-1,R,U)\times R^{n-\lfloor \frac{qm-r-1}{p}\rfloor} & (m>0) \\ R^n & (m=0) \end{cases} \]

参考 Blog:[学习笔记]万能欧几里得

posted @ 2024-03-30 11:11  ckain  阅读(29)  评论(0)    收藏  举报