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\) 本质是在求后缀最值。
考虑到可能成为前缀数组的后缀最值可能只有少数,而一定是一个连续的区间是同一个后缀最值。(用什么自己想)
浙公网安备 33010602011771号