AT_abc223_e

纯纯的数学题,判断每种情况是否成立。

AT_abc226_e

前置知识:

基环树:简单来说,就是树上多了一条连边,所以有 \(n\) 个点 \(n\) 条边,每个点的入度为 \(1\)

由于本题是无向图,所以基环树的边数扩大到了原来的两倍。

实现方面:

基环树判断在于判断点与边之间的关系是否合法

AT_abc233_f

看懂 swap 操作,本质是在走一条路径(从 \(i\)\(j\) 的一条路径,其中\(p_j = i\),如果 \(i\)\(j\) 中不在一个连通块内,则无解)。

如果给定的连通块是一个树,我们可以先处理深度高的在处理深度低的。

那如果不是一棵树,我们可以选择建立一个生成树(连通块上的每一个点都得有)。

AT_abc234_f

数学:

令字符串 \(T\)\(i\) 个字符的出现数量为 \(l_i\), 则这个字符串有 \(\frac {(\sum_{i=1}^n l_i)!} {\prod \limits_{i=1} ^n l_i !}\) 个本质不同的全排列

我们可以枚举每个字符的出现次数,考虑状态设计,可以得到 \(dp_{i, j} = dp_{i - 1, j - k} \times C_{j, k}\) 的状态转移方程。

AT_abc234_g

首先一开始读题,考虑状态设计,得到 \(dp_i = \sum _{j = i - 1} ^{j = 0} dp_j \times (\max_ {j + 1 \le k \le i} \{a_k \} - \min_{j + 1 \le k \le i} \{a_k \})\) 的转移方程。

这个 \(\max\)\(\min\) 本质是在求后缀最值。

考虑到可能成为前缀数组的后缀最值可能只有少数,而一定是一个连续的区间是同一个后缀最值。(用什么自己想)

posted on 2023-12-28 15:34  appear  阅读(9)  评论(0)    收藏  举报