第 161 课
枚举答案
🟢 入门 约 5 分钟
一句话理解
枚举答案:把可能的答案当循环变量去验证。
为什么要学
答案范围小、检验快时非常好用。也是二分答案的前身。
讲解
例如答案只能是 1 到 n,逐个检查哪个合法且最优。
检验若是 O(n),总复杂度 n²,要核对范围。
例子
for (int ans = 1; ans <= n; ans++)
if (check(ans)) { cout << ans; break; }
从小到大第一个成功的就是最小可行答案。
常见错误
- 答案范围是 1e18 还逐个枚举。应二分。
- check 写错导致所有 ans 都过。
练习 做完再看下一课
枚举答案要求答案的候选集合可以列出来。
否则无法逐个试。
在线练习 C++ 在浏览器里编译,代码不会上传 已通过
Ctrl / ⌘ + Enter 运行 · Tab 缩进
隐藏测试点只是界面不展示数据。题目 JSON 会下发到浏览器,可在开发者工具里看到,只适合自学,不是正式比赛评测。
进度保存在本机浏览器里。
左右方向键也可翻课