A

简单题。

B

简单题。

C

简单题,可以枚举二分图的左部点。

D

简单题,DFS 即可。

E

赛时考虑移动 \(T\),但死活调不出来。

赛后用 bitset 存整个图,一遍过,而且打的飞快。

F

双端搜索,用 \(f\) 存前 \(\frac{n}{2}\) 个数可能的子集和,\(g\) 存后 \(\frac{n}{2}\) 个数可能的子集和。

不过要分别记两个,中间不能同时选。

排序后二分计算,不过可以用 equal_range

G

赛时没想到。

\(t_P(T)\) 表示初始心情为 \(T\),按顺序收到 \(P\) 礼物后的最终心情。

定义一个 好的 序列 \(P_1, P_2, \cdots, P_n\),当且仅当 \(\forall i \in [1, n),P_i + A \le P_{i+1}\)

对于一个 好的 序列,一定存在一个整数 \(x\) 使得:

  • \(\forall i \in [1,x)\),收到礼物 \(P_i\) 一定 失望
  • \(\forall i \in [x, n)\),收到礼物 \(P_i\) 一定 高兴

对于两个序列 \(P,Q\),若 \(t_P(T) = t_Q(T)\),则称两个序列是等价的,不难证明两个等价序列的长度一定相等。