题目链接:https://codeforces.com/contest/1367/problem/C

题意

给出一个长为 $n$ 的 $01$字符串,两个相邻 $1$ 间距应大于 $k$,初始序列合法,问最多能再使多少 $0$ 变为 $1$ 。

题解

如果当前字符为 $0$,查找 $k$ 个距离内是否有 $1$:

  • 若有则不合法,跳至最近的 $1$
  • 否则因为 $k$ 个距离内没有 $1$,当前字符置为 $1$,跳至第 $i + k$ 个字符

如果当前字符为 $1$,因为初始序列合法,下一个可以置为 $1$ 的 $0$ 至少在第 $i + k$ 个字符后,跳至第 $i + k$ 个字符。

代码

#include <bits/stdc++.h>
using namespace std; void solve() {
int n, k; cin >> n >> k;
string s; cin >> s;
int ans = 0;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '0') {
int j = i + 1;
while (j < s.size() and s[j] == '0' and j - i <= k) ++j;
if (j - i > k or j == s.size()) {
ans++;
i += k;
} else i = j - 1;
} else i += k;
}
cout << ans << "\n";
} int main() {
int t; cin >> t;
while (t--) solve();
}

最新文章

  1. [deviceone开发]-动态添加组件add方法的示例
  2. textArea 高度自适应
  3. 技术英文单词贴--S
  4. 如何使用Coded UI Test对Webpage进行自动化测试
  5. 【BZOJ 4551】【TJOI2016】【HEOI2016】树
  6. 应聘复习基础笔记1:网络编程之TCP与UDP的优缺点,TCP三次握手、四次挥手、传输窗口控制、存在问题
  7. (DP6.1.2.1)UVA 147 Dollars(子集和问题)
  8. Firefly 性能测试 报告
  9. Altium Designer完美双屏显示方法演示
  10. Android Fragment基础及使用
  11. 前端--关于CSS文本
  12. 不是技术牛人,如何拿到国内IT巨头的Offer【转】
  13. Python使用MySQL数据库(新)
  14. python_如何获取文件状态
  15. Java高级特性之枚举
  16. Visual Studio 2010 集成 SP1 补丁 制作 Visual Studio 2010 Service Pack 1 完整版安装光盘的方法
  17. 剑指offer:1.找出数组中重复的数(java版)
  18. Eclipse 插件Maven在使用 add dependency,找不到包,解决办法
  19. DedeCMS后台500错误一种原因是不支持PHP5.3、5.4及以上版本
  20. error: Microsoft Visual C++ 14.0 is required(line_profiler模块安装失败的解决办法)

热门文章

  1. TCP/IP五层模型-传输层-UDP协议
  2. Linux性能相关命令
  3. ssl证书与java keytool工具
  4. select 里面带的值居然是估算的?
  5. 【ASM】介绍Oracle自带的一些ASM维护工具 (kfod/kfed/amdu)
  6. Unsafe Fileupload - Pikachu
  7. ctfhub技能树—彩蛋
  8. C语言变量
  9. Hadoop 专栏 - MapReduce 入门
  10. 08--Docker安装Mysql