agc024 题解
A \(\color{gray}\bigstar\)
对于差而言每次操作相当于交换,因此判断 \(k\) 奇偶性即可。
B \(\color{gray}\bigstar\)
不变的部分是一个值域连续上升子序列,直接找即可。
C \(\color{green}\bigstar\)
从后向前,直接推推就可以得到对答案的贡献。
D \(\color{blue}\bigstar\)
先考虑第一问,手模一下可以发现确定一个根之后所有深度相同的点是可以同构的。
因此第一问答案就是直径的一半。
第二问,确定根后相当于每一层取儿子个数最大值然后乘起来。
数据范围小,直接枚举根,注意根可以是一条边。
E \(\color{blue}\bigstar\)
不是很难的小清新数数。
插入等价于选一个位置,向右平移,然后再原地放一个更大的数。
考虑把序列中的数看成一个集合,等价于选一个数,插入一个比他大的数。
如果已知最后集合中数的集合,怎么求方案数?
考虑从小到大加数,那么比当前数小的都本质相同,先预处理出 \(f_{i,j}\) 表示 \(<x\) 的数有 \(i\) 个,\(x\) 有 \(j\) 个的方案数,这个可以 \(O(n^2)\) 的 dp 求。
\[f_{i,j}=f_{i-1,j}+f_{i-1,j-1}(i-j+1)
\]
然后直接放即可,令 \(g_{i,j}\) 表示当前进行到 \(i\),前面总共有 \(j\) 个数的方案。
\[g_{i,k}=\sum_{j=0}^k g_{i-1,j}f_{k,k-j}
\]
时间复杂度 \(O(n^2K)\),好像可以用卷积优化?
F \(\color{Gold}\bigstar\)
神秘的 dp 套 dp。
考虑对于一个数找他的所有子序列。
先建子序列自动机,然后每个子序列对应唯一了。
然后 dp,\(A\) 表示当前的子序列,\(B\) 表示还没有匹配的东西,注意到 \(|A|+|B|\le n\),因此可以压在一起,再设一维把这两个隔开,最高位加一把 \(B\) 隔出来,然后转移即可。
复杂度 \(O(n2^n)\)。