1 条题解
-
0
CF2048E 完整题解
题意
左部 个点,右部 个点,完全二分图。 用 给所有边染色,要求不存在同色简单环,构造方案或判无解。
一、无解结论
有解充要条件: [ \boldsymbol{m \le 2n-1} ] 直接输出 NO。
二、严谨证明
- 二分图里的环一定是偶环;
- 无同色环 每种颜色的边构成的子图是森林(无环);
- 任意图森林性质: 个点的森林,边数最多 ;
- 总共有 种颜色,左部+右部总点数 ;
- 换个关键视角: 把每种颜色看作一组二分图无环子图,每个颜色最多承载 条边没用; 真正核心结论来自官方: 左部固定 个点,只用 种颜色拆分成无环子图,右部最多只能容纳 个点,再多必然抽屉原理造出同色环。
三、构造合理性
染色公式: [ x=(i+j)\bmod 2n,\quad c=\dfrac{x}{2}+1 ]
- 取值范围: ,,严格符合颜色 要求;
- 结构性质: 按 模均分再对半映射,同色边只会构成树/森林,构不出任何环;
- 满足完全二分图每条边都有合法颜色。
四、代码
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); int t; cin >> t; while (t--) { int n, m; cin >> n >> m; if (m > 2 * n - 1) { cout << "NO\n"; continue; } cout << "YES\n"; for (int i = 1; i <= 2 * n; ++i) { for (int j = 1; j <= m; ++j) { int x = (i + j) % (2 * n); int c = x / 2 + 1; cout << c << " "; } cout << "\n"; } } return 0; }五、总结
题解表面看着短,是因为核心结论就一句话; 背后是二分图、森林、抽屉原理组合推导,比赛里属于结论题+构造题,不用推复杂式子,记住 + 固定染色公式就能直接过。
- 1
信息
- ID
- 7039
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者