CF1738F 题解
blog。duel 的时候对上了脑电波很快过了,记一下这种我本来完全不会的题。
肯定是搞掉平方。把 \(n_c\) 移到左边:\(\dfrac{\sum\limits_{u\in S} deg_u}{|S|}=\text{平均数}\le |S|\)。然后直接放缩左边,于是一个充分条件是:
\[\max\limits_{u\in S} deg_u\le|S|
\]
考虑构造合法解。观察到,假设 \(u\) 在集合 \(S\) 内,只需要将他的邻居全部放同一个颜色就行。于是有下面的简单算法:
- 将 \(deg\) 从大到小排序。
- 对于当前点 \(u\),如果邻居都没有被染色,直接新开一个颜色就行。
- 如果邻居有颜色,直接把 \(u\) 的颜色改成那个邻居的颜色就行。
容易证明其正确性。code,操作次数 \(O(n)\)。