1 解法
设 \(f_i\) 为 \(i\) 最多出现多少次,那么一个限制 \((u,v)\) 可以写成 \(f_u \leq f_v +1\),把 \(f\) 看做最短路中的 \(dis\) 数组,上面的式子就是在图上连一条从 \(u\) 到 \(v\) 边权是 \(1\) 的边,由于边权都是 \(1\),所以可以直接用 \(\text{bfs}\) 做.
然后考虑如何构造使得每个数 \(i\) 都能出现 \(f_i\) 次,设 \(S_i\) 为所有 \(f_j = i\) 的 \(j\) 组成的集合,\(k\) 是 \(f_i\) 的最大值,那么:
\[[S_k,S_{k-1}],[S_k,S_{k-2},S_{k-1}],[S_k,S_{k-3},S_{k-2},S_{k-1}], \text{...} [S_kS_1,S_2,\text{...},S_k] \]就是一个可以达到答案上限的方案.
2 总结
先求出答案的上限(下限),在构造一种方案来达到上限(下限).
标签:...,text,边权,上限,下限,CF1815C From: https://www.cnblogs.com/hellopikachu/p/17322062.html