CF1228

$Div.2$

A Distinct Digits

$l,r$ 比较小,不需要数位 $dp$ ,直接按照题意模拟即可.

B Filling the Grid

每个 $r,c$ 都可以确定一些格子的颜色.如果出现矛盾,答案为 $0$ .

否则没有被确定颜色的 $k$ 个格子可以任意选颜色,答案为 $2^k$ .

写完直接测第三个样例,就交上去了,把 $C$ 写了才发现 $B$ 没过,没判无解的情况…

C Primes and Multiplication

$x$ 的各个质因子之间贡献独立,分开计算.

一个质因子 $p$ 的贡献显然是 $\prod p^{n/p^k}$ ,注意判断是否令 $k$ 增加 $1$ 继续循环时,需要用除法判断,否则会爆 $\rm long\ long$ .

D Complete Tripartite

先随便选一个点 $x$ ,尝试将所有点划分成两个集合.

将 $x$ 加入第一个集合,若 $y$ 与 $x$ 有边,则加入第二个集合,否则加入第一个集合.

然后再在第二个集合中选一个点 $x$ ,将第二个集合划分成两个集合.

若划分后出现了空集,则无解.最后需要判断一下集合内的点是否没有边,以及跨越集合的点对都有边.

可以枚举每一个点 $u$ 和它的邻居 $v$ ,判断所有的 $v$ 是否恰好覆盖了 $u$ 所在集合外的所有点.

E Another Filling the Grid

直接容斥,枚举有 $x$ 行 $y$ 列一定没有 $1$ .

$x=n$ 或者 $y=n$ 的贡献只能算一次,因为它们都是覆盖了整个矩形,而其他情况显然都是互异的.

F One Node is Gone

注意到删掉一个点后,根节点一定是直径最中间的两个点之一.

Case 1

若删掉的点是根节点的儿子,直径会 $-1$ ,就可能产生两个答案,且根节点为直径最中间的那两个点之一.

还需要判断它们的子树是否都是满二叉树.

Case 2

删掉的点不是根节点的儿子,此时直径不变,为偶数,只可能有一个答案,且根节点为直径最中间的那一个点.

可以将剩下的树遍历一次,对于度数异常的点进行判断.

  1. 若度数为 $1$ 或 $3$ ,那么这个节点是正常的.

  2. 若度数为 $2$ ,那么被删的是它的儿子.只需判断它剩下的那个儿子是不是叶子.

  3. 若度数为 $4$ ,那么被删的是它的儿子.需要判断它的三个儿子的子树是否都是满二叉树,且高度为 $h,h,h+1​$ .

  4. 若度数 $>4$ ,显然不合法.

若有多个度数异常的点,显然也不合法.

判断某个子树是否为满二叉树,可以对树 $dfs$ 处理.

这颗子树为满二叉树,当且仅当它是叶子,或左右儿子的子树都是满二叉树,且高度相同.