本题显然是一个二分图匹配的问题。所以利用 Hall 定理可以求出第一问:具体的,把球当做左部点,盒子当做右部点连边。记左部点集合为 X,右部点集合为 Y,则对于每个 S \subseteq Y 且 S \neq \varnothing,求出 S 在 X 中的邻域 N(S),计算 |N(S)|-|S|+1 的最小值,记为 ans。
但是 S 是无法枚举的,考虑枚举 N(S)。对于每个 T \subseteq X,求出最大的 |S| 使得 N(S) \subseteq T。注意 S \neq \varnothing 必须被满足。这一过程可以使用高维前缀和实现。
考虑从 X 中删掉一个大小为 ans 的集合(特判 ans \le 0 的情况)。设这个集合中小球的颜色构成的集合为 T_0。如果有任何一个满足要求的上文的 T 包含了 T_0,删除 T_0 后就会是 Hall 条件不再满足,也就是不存在完美匹配。
所以做一遍高维后缀和后,可以得出哪些 T_0 是合法的。记 I_T=1 表示 T 合法,否则表示 T 不合法。