1 条题解
-
0
[SNCPC2019] 关灯(Turn It Off) 题解
思路分析
固定操作长度 时,从左到右扫描字符串,每遇到一盏亮着的灯
1(下标 ),贪心地覆盖 最优,随后直接跳到 继续扫描。所需操作次数随 增大单调不增,因此在 上二分答案 即可。单组数据时间复杂度 。参考代码
#include <iostream> #include <string> using namespace std; bool check(const string& s, int n, int k, int L) { int ops = 0; for (int i = 0; i < n; ++i) { if (s[i] == '1') { ++ops; if (ops > k) return false; i += L - 1; } } return true; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T; if (!(cin >> T)) return 0; while (T--) { int n, k; string s; cin >> n >> k >> s; int l = 1, r = n, ans = n; while (l <= r) { int mid = (l + r) / 2; if (check(s, n, k, mid)) { ans = mid; r = mid - 1; } else { l = mid + 1; } } cout << ans << "\n"; } return 0; }
- 1
信息
- ID
- 8542
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者