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

news/2024/9/19 8:08:19/

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;减少模型对于对象出现位置…

Python全栈开发(一)——环境搭建和入门

今天是2023年的第一天&#xff0c;接下来的一个月里&#xff0c;我将持续更新关于python全栈开发的相关知识&#xff0c;前面一段时间都是基础语法。主要分成四大块&#xff1a;基础、面向对象、MYSQL数据库、Django框架。话不多说&#xff0c;进入到今天的主题。 1.文档和工具…

【CSP】邻域均值

邻域均值 邻域均值 题意比较好理解&#xff0c;就是算一些数字。如果采用暴力方法的话&#xff0c;就是用一个边长为 2∗r12*r12∗r1 的正方形框框住大矩阵&#xff0c;然后遍历这个框&#xff0c;求出其平均值&#xff0c;然后移动正方形框&#xff0c;直到大矩阵内所有像…

MySql底层索引原理

前言 我们都知道MySql索引效率很高&#xff01;那其中的原理是什么呢&#xff1f;先跑出个问题来&#xff1a;二叉树、红黑树&#xff08;二叉平衡树&#xff09;、BTree&#xff08;平衡多叉树&#xff09;、Btree这几种类型中哪一种是mysql索引所选择的呢&#xff1f; 这个…

更新和删除数据

目录1、更新数据2、根据其他表更新数据3、 删除数据4、根据其他表删除数据对于不加WHERE条件的UPDATE和DELETE要格外谨慎&#xff01; 1、更新数据 1.1 更新全部数据&#xff1a;使用UPDATE关键字。语法如下&#xff1a; UPDATE 表名 SET 字段名新的值; 比如&#xff0c;更新学…

寒假每日一题W1D3——上课睡觉

题目描述 有 N 堆石子&#xff0c;每堆的石子数量分别为 a1,a2,…,aN。 你可以对石子堆进行合并操作&#xff0c;将两个相邻的石子堆合并为一个石子堆&#xff0c;例如&#xff0c;如果 a[1,2,3,4,5]&#xff0c;合并第 2,3 堆石子&#xff0c;则石子堆集合变为 a[1,5,4,5]。…

【攻防世界】Web warmup

知识点讲解 这一题主要是利用了include的特性 如果include的文件名中含有“/”&#xff0c;那么它会识别其为一个带目录的文件&#xff0c;只有最后一个“/”后的字符串对应的文件会被包含&#xff0c;而前面的字符串都只是在指定目录 意思是&#xff0c;如果我们的payload是这…

Qt第五十五章:Qt Design Studio设计登录页并打包到python运行

目录 一、Qt Design Studio 二、导出所有文件到QRC&#xff08;不要改动默认的QRC文件名称&#xff09; 三、QRC转换成py 1.删除Constants.qml中的 2.将App.qml和Screen01.qml中的 3.转换 4、将QRC文件和转换后的py文件&#xff0c;复制到python项目中使用。 一、Qt Des…

转换通达信分钟数据,包括5分钟和1分钟数据

目录 1 前言 2 操作演示 3 代码 4 软件下载 5 stockpy整体功能介绍 1 前言 真正的市场高手不但要熟练掌握日线&#xff0c;对分钟线也要进行深入研究。缠中说禅在他的博客中讲到&#xff0c;年、季、月、周、日、60分钟、30分钟、5分钟、1分钟研究道理是相同的。粒度越细&…

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核

20230102单独编译Toybrick的TB-RK3588X开发板的Android12的内核 2023/1/2 17:40 《RK3588_Android12_SDK_Developer_Guide_CN.pdf》 原厂的开发板rk3588-evb1-lp4-v10单独编译内核的方式&#xff1a; cd kernel-5.10 export PATH../prebuilts/clang/host/linux-x86/clang-r4161…

校招前端面试题集锦

JavaScript 类数组对象的定义&#xff1f; 一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象&#xff0c;类数组对象和数组类似&#xff0c;但是不能调用数组的方法。常见的类数组对象有 arguments 和 DOM 方法的返回结果&#xff0c;还有一个函数也可以被看作…

API管理神器:Apifox

前言 代码未动&#xff0c;文档先行 其实大家都知道 API 文档先行的重要性&#xff0c;但是在实践过程中往往会遇到很多困难。 程序员最讨厌的两件事&#xff1a;1. 写文档&#xff0c;2. 别人不写文档。大多数开发人员不愿意写 API 文档的原因是写文档短期收益远低于付出的…

使用python实现跨年烟花代码

朋友们&#xff0c;有多久没放烟花了&#xff1f;今年你所在的地方允许放烟花么&#xff1f;既然我们不能线下放&#xff0c;那么我们就在线上放个够吧&#xff08;还是那句话&#xff1a;你~有~对~象~了~嘛~&#xff09; 一下是动态图&#xff08;图片我使用的我上几次的背景图…