第五十八次
A
注意到查询时 $\{a_i|l\le i\le r\}$(去重)只会有 $2^{10}$ 种,先预处理出每一种的背包数组,可以 bitset
压空间。
现在只需支持修改,以及查询 $\{a_i|l\le i\le r\}$(去重),线段树上每个节点 $[l,r]$ 维护 $\{a_i|l\le i\le r\}$(去重)的状压值即可。
B
可以发现如果序列 $x$ 前后两部分最大值相等,一定可以造出符合要求的矩阵,
所以问题变为统计 $1\le x_i\le K$,且前后两部分最大值相等的序列 $x$ 个数。
设 $f(k)$ 表示 $K=k$ 时 $x$ 序列的个数,考虑枚举 $x$ 序列的最大值,
不难得出最大值为 $i$ 时,$x$ 序列有 $(i^n-(i-1)^n)(i^m-(i-1)^m)$ 种,
于是 $f(k)=\sum\limits_{i=1}^k(i^n-(i-1)^n)(i^m-(i-1)^m)$。
$K$ 有点大,但 $f(k)$ 是 $n+m+1$ 次多项式,所以可以拉插出 $f$,然后将 $K$ 代入即可。
C
注意到有超过两种颜色的边一定有 $1$ 的贡献,所以只需考虑有不超过两种颜色的边的选择方案。
点分治。先把每个询问挂到其分治重心(点分树 LCA)上。
分治 $u$ 点时,对其分治子树中每个点 $i$ 处理 $f_{i,0/1,0/1}$ 表示 $u\to i$ 这条链,链顶选择第 $1/2$ 种颜色,链底选择第 $1/2$ 种颜色的最大贡献,
为了方便合并,还可以再处理 $g_{i,0/1}=\max\{f_{i,0/1,0},f_{i,0/1,1}\}$。$f,g$ 容易树上 DP 求出。
对 $u$ 点上每个询问 $x,y$,枚举 $u\to x,u\to y$ 链顶选择哪种颜色,合并 $g_x,g_y$ 统计答案即可。
D
啥玩意,看不懂啊。