上海计算机学会2022年6月月赛C++丙组T4连续的零

题目描述

给定一个 01 序列 b1​b2​...bn​,01 的意思就是这个数列里只有 01

请问最少需要将多少个 1 改成 0,序列里会出现至少 k 个连续的 0

输入格式
  • 第一行:两个整数 n 与 k。
  • 第二行:n 个字符表示 b1b2...bn,保证只出现 01
输出格式

单个整数:最少要改多少个 1,才会出现 k 个连续的 0

数据范围
  • 对于 30%30% 的数据,1≤k≤n≤20;
  • 对于 60%60% 的数据,1≤k≤n≤2000;
  • 对于 100%100% 的数据,1≤k≤n≤500,000
样例数据

输入:

6 3

101010

输出:

1

说明:

改最后一个1

输入:

5 5

00100

输出:

1

题解:

本题关键点:滑动窗口法来解。代码如下。

cpp 复制代码
#include <iostream>
using namespace std;
int  main(){
	string s;	
	int size=0;
	int n, k;
	cin >> n >> k;
	cin >> s;
	int ans=n;
	for(int left=0,right=0;right<n;right++){
		//进窗口
		if(s[right]=='1') size++;
		if(right-left==k){
			//出窗口
			if(s[left]=='1') size--;
			left++;
		}
		if(right>=k-1){
			ans=min(ans,size);
		}	
	}
	cout<<ans<<endl;
	return 0;
}
相关推荐
txinyu的博客12 小时前
结合STL,服务器项目解析vetcor map unordered_map
开发语言·c++
Nsequence12 小时前
第四篇 STL-list
c++·算法·stl
源代码•宸12 小时前
Golang原理剖析(程序初始化、数据结构string)
开发语言·数据结构·经验分享·后端·golang·string·init
HalvmånEver13 小时前
Linux:深入剖析 System V IPC上(进程间通信八)
linux·运维·数据库·c++·system v·管道pipe
空山新雨后、13 小时前
从 CIFAR 到 ImageNet:计算机视觉基准背后的方法论
人工智能·深度学习·算法·计算机视觉
m0_7482500313 小时前
C++ Web 编程
开发语言·前端·c++
YuTaoShao13 小时前
【LeetCode 每日一题】712. 两个字符串的最小ASCII删除和——(解法三)状态压缩
算法·leetcode·职场和发展
liliangcsdn13 小时前
LLM训练中batchsize与过拟合和泛化的关系
人工智能·算法·机器学习
承渊政道13 小时前
C++学习之旅【C++String类介绍】
c语言·c++·vscode·学习
muddjsv13 小时前
什么是算法?——现代视角下的一次凝视
算法