CF628F Bear and Fair Set
网络流好题。
先将所有限制按 \(u_i\) 排序,同时令 \(u_0=0,t_0=0\) 和 \(u_{q+1}=b,t_{q+1}=n\)。(下面就把 \(q\leftarrow q+1\) 了)
这些限制会把 \(1\sim b\) 分成 \(q\) 段。先检查一遍,如果出现 \(u_i\) 更大反而 \(t_i\) 更小,unfair;如果出现一个段内数的个数爆了,unfair。
然后利用网络流构图判断。
考虑对每一个段建立 \(q\) 个段结点 \(D_i\),对余数 \(0\sim 4\) 建立 \(5\) 个余数结点 \(r_i\)。一个数看作一个流量。如果在下面的构图中最大流是 \(n\) 则可行。
\(r_i\rightarrow T\),容量 \(n/5\)。表示最后要有 \(n/5\) 个数是余数 \(i\)。
\(S\rightarrow D_i\),容量 \(t_{i}-t_{i-1}\)。表示段 \(i\) 要进入 \(t_i-t_{i-1}\) 个流量。
\(D_i\rightarrow r_j\),容量为 \((u_{i-1},u_i]\) 中余 \(j\) 的数的个数。