D2. RGB Substring (hard version)(尺取)

news/2024/11/20 4:29:58/

Problem - 1196D2 - Codeforces

通用领域

医学

计算机

金融经济

你有一个包含n个字符的字符串s,每个字符是'R', 'G'或'B'。

你还得到一个整数k。你的任务是改变初始字符串s中的最小字符数,这样在改变之后,将会有一个长度为k的字符串,它是s的子字符串,也是无限字符串“RGBRGBRGB…”的子字符串。

字符串A是字符串b的子字符串,如果存在正整数i,使得a1=bi, a2=bi+1, a3=bi+2,…、| | = bi + | |−1。例如,字符串“GBRG”,“B”,“BR”是无限字符串“RGBRGBRGB…”的子字符串,而“GR”,“RGR”和“GGG”不是。

你必须回答q个独立的问题。

输入

输入的第一行包含一个整数q(1≤q≤2⋅105)——查询次数。然后是q次查询。

查询的第一行包含两个整数n和k(1≤k≤n≤2⋅105)——字符串的长度s和子字符串的长度。

查询的第二行包含一个字符串s,由n个字符'R', 'G'和'B'组成。

保证所有查询的n个数之和不超过2⋅105(∑n≤2⋅105)。

输出

对于每个查询,打印一个整数-初始字符串s中需要更改的最小字符数,这样更改后将有一个长度为k的子字符串s,该子字符串也是无限字符串“RGBRGBRGB…”的子字符串。

例子

inputCopy

3.

5个2

BGGGG

5个3

RBRGR

5 5

BBBRR

outputCopy

1

0

3.

请注意

在第一个例子中,可以将第一个字符改为'R',得到子字符串“RG”,或者将第二个字符改为'R',得到子字符串“BR”,或者将第三、第四或第五个字符改为'B',得到子字符串“GB”。

在第二个例子中,子字符串是“BRG”。

题解:
我们枚举以三种字母开头的方式,尺取每k段的不一样需要修改的最小值

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
typedef pair<int,int> PII;
char s[200005];
char p []={"RGB"};
int cnt[200050];
void solve()
{int n,k;cin >> n >> k;cin >> s;int ans = 1e9;for(int d = 0;d < 3;d ++){int c = 0;for(int i = 0;i < n;i++){cnt[i] = (s[i]!=p[(d+i)%3]);c += cnt[i];if(i - k >= 0){c -= cnt[i-k];}if(i >= k-1){ans = min(ans,c);}			}}cout << ans<<"\n";}
//1 2 3 4 5
signed main(){
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);int t = 1;cin >> t;while(t--){solve();} 
}
//5 2
//3 12


http://www.ppmy.cn/news/8709.html

相关文章

gateway基本配置

目录 1、gateway简介 2、gateway核心概念 3、路由 4、断言 5、过滤器 5.1、过滤器介绍 5.2、内置局部过滤器与使用 5.3、内置全局过滤器 5.4、自定义全局过滤器 5.4.1、黑名单校验 5.4.2、模拟登录校验 6、一个简单的gateway配置实例 1、gateway简介 路由转发 执行…

【android Framework 探究】android 13 aosp 全记录 - 烧录

相关文章&#xff1a;【android Framework 探究】android 13 aosp编译全记录 写在开始 书接上文&#xff0c;编译完后&#xff0c;在二手平台挑挑拣拣最终下手piexl 5&#xff0c;这就开始迫不及待的烧录。 一&#xff0c;解锁bootloader 如果之前已经解锁可以跳过这步 adb r…

SpringBoot整合ShardingJdbc实现数据库水平分表实战

(1)添加Maven依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

表白墙 -- 前后端代码详解

表白墙 -- 前后端代码详解一、前端二、后端实现2.1 需求2.2 创建项目及初始化2.3 实现提交数据 (存档)2.3.1 实现 doPost2.3.2 构造请求 (修改 html 文件)2.3.3 验证2.4 实现获取数据 (读档)2.4.1 实现 doGet2.4.2 构造请求 (修改 html 文件)2.4.3 验证三、JDBC 版本 (MySQL)3.…

Java个人家乡博客源码

概述 个人博客相册家乡主题&#xff0c;用户注册后可以发布关于家乡的特色文章介绍&#xff0c;可以发布照片&#xff0c;相册管理&#xff0c;留言&#xff0c;评论&#xff0c;回复&#xff0c;收藏&#xff0c;关注 演示视频 https://www.bilibili.com/video/BV1iy4y1x7w6…

Python数据分析案例16——水质检测(支持向量机)

本次带来图片分类的案例&#xff0c;水质检测。 数据展示 五种类别的水质&#xff0c;图片形式储存的&#xff1a; 前面1是代表水质的类别标签&#xff0c;后面是样本个数。 图片特征构建 import numpy as np import pandas as pd import matplotlib.pyplot as plt import o…

Python代码实现学生管理系统

Python代码实现学生管理系统 需求说明 实现一个命令行版本的学生管理系统 功能: 新增学生 显示学生 查找学生 删除学生 存档到文件 创建入口函数 使用一个全局列表 students 表示所有学生信息. 使用 menu 函数和用户交互. 这是一个自定义函数. 使用 insert , show ,…

56. 数据增广 / 图像增广

1. CES上的真实故事 2. 数据增强 增加一个已有数据集&#xff0c;使得有更多的多样性 在语言里加入各种不同的背景噪音改变图片的颜色和形状 例如&#xff0c;我们可以以不同的方式裁剪图像&#xff0c;使感兴趣的对象出现在不同的位置&#xff0c;减少模型对于对象出现位置…