AT 杂题记录 1
参见:旧 AT 杂题记录 1、旧 AT 杂题记录 2
ABC259Ex - Yet Another Path Counting
fydj 告诉我的题目。
给定 \(N\times N\) 的矩阵,每个格子有一种颜色,每一步只能向下走或向右走。求起点终点为同一种颜色的路径数量。
\(1\le N\le 400\)
解法:
这种分颜色考虑的,经典做法是值域分治。
首先容易想到,枚举两个颜色相同的位置分别作为起点和终点,用组合数计算。假设有 \(B\) 个该颜色的格子,可以做到 \(O(B^2)\)。
另外,还可以 DP 计算,设 \(f_{i,j}\) 表示走到位置 \((i,j)\) 的方案数,很容易转移,可以做到 \(O(N^2)\)。
平衡一下,当某种颜色出现次数不超过 \(N\) 次时,用第一种做法,否则用第二种做法,时间复杂度是 \(O(N^3)\),可以通过。
Submission
ARC190B - L Partition
有一个 \(N\times N\) 的矩形,定义 \(K\) 阶 \(L\) 形为一个 \(K\times K\) 的矩形的最左(或右)侧一行与最上(下)面一列组成的图形。显然使用 \(1\) 到 \(N\) 阶 \(L\) 形个恰好一次可以将 \(N\times N\) 的矩形覆盖。
给定 \(a\) 和 \(b\),有 \(q\) 次询问,第 \(i\) 次询问给定 \(k_i\),求 \((a,b)\) 被 \(k_i\) 阶 \(L\) 形覆盖的方案数。
\(1\le N\le 10^{7},1\le Q\le \min\{N,2\times 10^{5}\}\)。
解法:
考虑 \(1\) 到 \(k\) 阶 \(L\) 形必定组成一个 \(k\times k\) 的矩形。
考虑 \((a,b)\) 出现在 \(k\) 阶 \(L\) 形上的条件:其必须在这个 \(k\times k\) 的矩形的边上或角上。
考虑矩形内部的贡献:
- 当 \(k=1\) 时,只有 \(1\) 种方案。
- 当点在角上的时候,有 \(3\times 4^{k-2}\) 种方案。
- 当点在边上的时候,有 \(2\times 4^{k-2}\) 种方案。
再考虑矩形外部的方案数:每一个 \(k+1\) 到 \(n\) 阶的 \(L\) 形可以选择在这个矩形的上面覆盖或下面覆盖,在矩形的左侧覆盖或右侧覆盖,且这两种选择独立。假设我们希望 \(k\times k\) 矩形的左上角为 \((x,y)\),那么方案数就是 \(\binom{n-k}{x-1}\binom{n-k}{y-1}\),即在未选择的 \(L\) 形中选择一些放在左侧或上面。
矩形的左上角是什么呢?当 \((a,b)\) 在角上的时候,左上角显然是确定的,且只有 \(O(1)\) 个,可以直接计算。
当 \((a,b)\) 在边上的时候,假设在 \(k\times k\) 矩形的上边,其它情况同理。则矩形左上角为 \((a,i)\),需要满足 \(b\in [i+1,i+k-2]\),即 \(b+2-k\le i\le b-1\)。列的方案数是 \(\sum_{i=b+2-k}^{b-1}\binom{n-k}{i-1}\),即 \(\sum_{i=b+1-k}^{b-2}\binom{n-k}{i}\)。即 \(f_k\) 等于这个式子,那么总方案数是 \(\binom{n-k}{a-1}f_k\)。
考虑如何计算 \(f_k\),\(k\) 从大到小枚举,这是很经典的一行组合数的一个区间移动到下一行,只要乘二之后减去一些即可。
Submission
ABC360F - InterSections
给定 \(n\) 个区间 \([l,r]\),定义区间 \([l_1,r_1]\) 和 \([l_2,r_2]\) 相交当且仅当 \(l_1<l_2<r_1<r_2\) 或 \(l_2<l_1<r_2<r_1\)。
求 \(0\le L<R\le 10^{9}\),使得 \([L,R]\) 与给定区间相交数量尽可能多。如有多解,输出字典序最小的一组。
解法:
将相交的条件进行转化,例如 \(l_i<L<r_i<R\),可以重新表述为 \(l_i+1\le L\le r_i-1\) 且 \(r_i+1\le R\le 10^{9}\)。
如果将 \(l\) 看作 \(x\) 轴,将 \(r\) 看作 \(y\) 轴,那么这是一个矩形的形式。
原问题变为矩形覆盖,查询平面单点最大值。扫描线即可。
注意 \(L\not=R\)。
Submission #61687780 - AtCoder Beginner Contest 360
ARCE - Mex Mat
有一个 \(n\times n\) 的矩形 \(A\),给定这个矩形的第一行和第一列。\(A_{i,j},i>1,j>1\) 定义为 \(\operatorname{mex}\{A_{i-1,j},A_{i,j-1}\}\)。给定第一行第一列中只有 \(0\) 或 \(1\) 或 \(2\),容易证明整个矩阵中也只有这三种数字。求矩阵中有多少个 \(0\),\(1\),\(2\)。
\(1\le n\le 500,000\)
解法:
打表发现,对于 \(i>5\) 且 \(j>5\) 有 \(a_{i,j}=a_{i-1,j-1}\),具体证明需要一些性质,比较繁琐。所以只需要将前五行和前五列求出来简单计算即可。
Submission