当前位置: 首页 > news >正文

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

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

相关文章:

  • 【FPGA开发】Verilog 基础
  • 【闲来无聊写个几个小特效——五角星,小光圈,探照灯】
  • Java爬虫 爬取某招聘网站招聘信息
  • 1.1
  • 字符串大小写转化,有序数组二分查找个人心得等若干内容
  • Dijkstra求最短路(堆优化)
  • 使用python实现跨年烟花代码
  • 2022年终总结
  • 【JavaScript】JS的三大组成-DOM
  • 【Linux】Linux进程的理解
  • bash 查看变量函数定义和值 (type declare)
  • html+css设计两个摆动的大灯笼
  • 音视频知识介绍(二)
  • github上传代码(亲测实用)
  • Vue 中 CSS scoped 的原理
  • MySQL 数据库练习题记录01
  • 142.环形链表II
  • java短网址平台
  • 【论文阅读】《知识图谱研究综述》;Knowledge Graph:概念及主要应用,主要特征、构建的主要技术、未来研究方向。
  • 通过Django发送邮件
  • 国家卫健委:工作相关肌肉骨骼疾病、精神和行为障碍成职业健康新挑战
  • 国家发改委:是否进口美国饲料粮、油料不会影响我国粮食供应
  • 国内生产、境外“游一圈”再进保税仓,这些“全球购”保健品竟是假进口
  • 广州一人均500元的日料店回收食材给下一桌?市场监管部门介入调查
  • 伊朗外长: 美伊谈判进展良好,讨论了很多技术细节
  • 官方披露:临汾昔日“明星官员”宿青平已于去年落马