链接放的是洛谷上的链接。
<details>
<summary>$\texttt{solution}$</summary>
</details>
ARC083F
\(n\times n\) 的正方形上有 \(2n\) 个小球,第 \(i\) 个在 \((x_i,y_i)\)。
有 \(n\) 个 A 类机器人,第 \(i\) 个在 \((0,i)\),有 \(n\) 个 B 类机器人,第 \(i\) 个在 \((i,0)\)。
启动一个 A 类机器人后,它会向右走,将碰到的第一个球收集起来,并返回起点。启动一个 B 类机器人后,它会向上走,将碰到的第一个球收集起来,并返回起点。
只有上一个机器人返回起点后,下一个机器人才会被启动。机器人一旦被使用过一次就不能被再次使用。
问你有多少种启动机器人的顺序,能够收集完所有小球。方案数对 \(10^9+7\) 取模 。
\(n\leq 10^5\)
$\texttt{solution}$
不会做,看题解去了。。每个机器人都会认领一个球,放到图上,发现这就是个基环树森林。
- 对于点对 \((x_i,y_i)\),在 \(x_i\) 与 \(y_i\) 之间连边,相当于每个机器人都要认领一条边,发现如果不是基环树无法实现。
- 一条边可以被 \(x_i\) 处的或 \(y_i\) 处的机器人认领,不妨将每条边定向,那么每个点都会有一个出度,是一个内向基环树。
这样就将题目转化为在内向基环树森林上取点的方案数。
如果将这棵树上按照覆盖的顺序拎出来,可以发现这是一棵内向树,内向树拓扑排序数量如下,\(|S|\) 为森林的大小,\(siz_i\) 是子树 \(i\) 的大小:
那么求出每棵树的方案乘起来就行了(基环树的环有两种方向!,加起来后乘起来)
AGC002F
给你 \(n\) 种颜色的球,每个球有 \(k\) 个,把这 \(n\times k\) 个球排成一排,把每一种颜色的最左边出现的球涂成白色(初始球不包含白色),求有多少种不同的颜色序列,答案对 \(10^9+7\) 取模。
\(n,k\le 2000\)
$\texttt{solution}$
考虑这样一个 dp:设 \(dp(i,j)\) 表示已经放了 \(i\) 中颜色,放了 \(j\) 的球的方案数。
我们在放置一种颜色的球时,考虑直接放完这种颜色的所有球,那么就不会对接下来放球造成影响。
- 如果我们选择放置一个白球,直接放在能够放置的最前一个位置。
- 否则,需要先选择出这次放置的颜色,再选出放置的位置,直接转移。
当然,我们需要保证 \(i\le j\),这保证我们的放置符合题意。
AGC003E
一串数,初始为 \(1\sim n\),现在给 \(Q\) 个操作,每次操作把数组长度变为 \(q_i\),新增的数为上一个操作后的数组的重复。问