A

随便判断一下。

B

显然排序以后取前 $n$ 个和后 $n$ 个。

C

存一个 $cnt[size][sum]$ 表示有多少串在强制前一半长度是 size , 需要剩下一半的和是 sum。
直接处理以后枚举即可。

D

显然确定了 $b_1$ 就全确定了,而且题目保证有解, 那我们只需要判断每个数是不是都比 $n$ 小, 这个东西就是枚举 $b_1$ 放 Trie 上查询最大值就行了。

E

选了一个以后下一步其实是确定的, 设选 $i$ 以后下一张牌是 $to_i$, $i$ 往 $to_i$ 连边建图即可简单判断。

F

因为 $x$ 很小, 可以猜到是不是 $x$ 小的时候有神秘做法, 于是河里猜想容斥一下, 计算 $\min {a_i} \leq x + k - 1$ 的答案, 减去 $\max_{a_i} \leq x - 1$ 的答案。

$\min { a_i } \leq x + k - 1$ 这个条件实际上是容易计算的, 因为限制是关于差的, 考虑构造差分数组进行计数, 那么一共有 $(2k + 1) ^ {n - 1}$ 个不同的差分数组, 求前缀和放到平面上考虑就是一条折线, 因为要满足最小值的限制, 我们对于每个不同的折线确定它最小值是多少, 也就确定了这条折线的起点, 所以数组个数就是 $(x + k)(2k + 1)^{n - 1}$ 。

$\max { a_i } \leq x - 1$ 的答案因为 $x$ 很小, 矩阵乘法优化即可。

G

其实看着就感觉模型很奇怪, 借助流想。
建立最小割模型以后, 对 $0$ 建立边 $(S, i, b_i), (i, T, r_i)$ , 对 $1$ 建边 $(S, i, r_i), (i, T, b_i)$, 然后每个 $1$ 往后面的 $0$ 都连一个流量为 $1$ 的边, 答案就是 $\sum r_i + b_i$ 减去最大流。
那先流一个流量下界 $\min (r_i, b_i)$, 然后考虑 $1$ 和 $0$ 的匹配问题。首先已经流的部分肯定是不会产生回流的问题的, 因为必须流, 那么如果剩下的部分可以通过贪心确定最优解, 我们就可以免去跑最大流的问题。 让 $c_i = r_i - \min(r_i, b_i)$, 那么对于每个 $1$, 我们都是取出后面剩余流量最大的 $k$ 个点全部减去 $1$, 这根据贪心是显然的。 使用一个平衡树维护这个贪心就可以了。
要断电了, 代码抄了