「USACO 2021 US Open」题目选做2
Minimum Cost Pa P
首先感谢 @CXY07,他教会了我这道题的解法。
设在第 \(i\) 列我们从 \((s_{i-1},i)\) 移动到了 \((s_i,i)\)(\(s_0=0\)),那么总代价为
作一些变形可得
忽略常数项,我们发现要做的仅仅是
这是经典的保序回归问题,翻阅 2018 年的国家预选队论文即可知道做法。
总的时间复杂度为 \(\mathcal O(m+q\log m)\)。
并且注意到 \(\dfrac{c_{i+1}-c_i}{2}\) 这种差分形式的前缀和非常好维护。
Spaceship P
首先,我们可以将答案写作从 \(s\) 到 \(t\) 走 \(i\) 步的方案数与上长度为 \(i+1\) 的合法按键序列的乘积之和。
并且注意到从 \(s\) 到 \(t\) 走 \(i\) 步的方案数为 \({\mathbf A}^i(s;t)\),其中 \(\mathbf{A}^i\) 为邻接矩阵 \(\mathbf A\) 的 \(i\) 次幂。
所以很容易想到设出一个生成函数 \(F(x)\),使得\([x^i]F(x)\) 恰好为长度为 \(i\) 的合法按键序列,根据多项式环的通用性质,答案就是 \({\mathbf A^{-1}}F(\mathbf A)\)。
进一地,注意到每个合法的按键序列中有唯一的最大值,因为按下最大值之后不可能按到编号更大的按钮,所以我们可以将序列从最大值处断开,分为左右两段独立的区间来处理。
所以我们令 \(F_k(x)\) 为所有元素 \(\le k\) 的合法序列的生成函数。
写出转移方程
解释:枚举序列中的最大值 \(i\),拆成左右两段,两段中的元素均 \(\le i-1\),然后作个卷积。乘 \(x\) 是因为要去掉最大值,\(+1\) 是因为我们的生成函数没有常数项,方便之后处理。
我们先预处理出所有的 \(F_k(\mathbf A)\),时间复杂度为 \(\mathcal O(kn^3)\)。
接下来,考虑上序列首、尾的限制,设 \(F_{b_s,0,k}(x),F_{0,b_t,k}(x),F_{b_s,b_t,k}(x)\)为分别考虑首、尾、首和尾的限制的生成函数,仿照上式写出转移方程
设行向量 \({\mathbf \epsilon}_s=([i=s])_{i=1}^n\),实际上,在转移中,我们仅需维护出 \(\epsilon_sF_{b_s,0,k}(\mathbf A),F_{0,b_t,k}(\mathbf A)\epsilon_t^{\text{T}},\epsilon_sF_{b_s,b_t,0}(\mathbf A)\epsilon_t^{\text{T}}\) 即可。
总的时间复杂度为 \(\mathcal O(kn^3+qkn^2)\)。
Paint by letters
由题意可知,我们要求的是一个子矩阵的连通块个数。
而由著名的平面图欧拉定理,我们有 \(|V|-|E|+|F|=|C|+1\),其中 \(|V|,|E|,|F|,|C|\) 分别为点集、边集、区域集和连通块集。
若除去无界域,我们的式子变为 \(|V|-|E|+|F|-1=|C|\)。
我们将讨论 \(|V|,|E|,|F|\) 如何快速求出。
点集
显然为 \((x_2-x_1+1)(y_2-y_1+1)\)。
边集
记录一个点 \((x,y)\) 向右、向下连边的个数,作一遍二位前缀和,分开查询横向和纵向的边的个数,相应地上去最后一行和最后一列即可。
有界区域集
注意到一个区域其实一个就是 \(2\times 2\) 的正方形的连通块,这里的连通定义为没有横向或纵向的边阻挡。
所以我们可以 bfs 出所有的区域,并在子矩阵查询中做一些删减即可。
具体地,我们令 \((i,j)\) 代表以 \((i,j)\) 为左上角的 \(2\times 2\) 正方形,向四周扩展出所有与它连通的 \(2\times 2\) 正方形。
将每一个区域中的一个点标记为 1,其余点标记为 0,做一遍二维前缀和。
注意到以 \((x_1,y_1)\) 为左上角,\((x_2,y_2)\) 为右下角的子矩阵中共有 \((x_2-x_1)(y2-y_1)\) 个 \(2\times 2\) 的正方形,即满足 \(i\in[x_1,x_2),j\in[y_1,y_2)\) 的这些以 \((i,j)\) 为左上角的正方形。
所以我们可以先查一遍相应子矩阵的二位前缀和,再减去标记点在该子矩阵中,且扩展到子矩阵外的不同的域的个数,这个很好处理,扫一遍外围的 \(2\times 2\) 的正方形即可。
总的时间复杂度为 \(\mathcal O(nm+q(n+m))\)。
本文来自博客园,作者:Gauss0919,转载请注明原文链接:https://www.cnblogs.com/Gauss0320/p/15160116.html

浙公网安备 33010602011771号