[题解]RGB Substring (hard version)-前缀和(codeforces 1196D2)
2024-08-28 13:55:27
题目链接:https://codeforces.com/problemset/problem/1196/D2
题意:
q 个询问,每个查询将给你一个由 n 个字符组成的字符串s,每个字符都是 “R”、“G” 或 “B”。
求出更改初始字符串 s 中的最小字符数,以便更改后将有一个长度为 k 的字符串,该字符串是 s 的子字符串,也是无限字符串 “RGBRGBRGB…” 的子字符串
思路:
在无限字符串中有三种子串:“RGB...”,“GBR...”,“BRG...”
在这三种不同情况下,将所求字符串与原字符串比较
若不同,则贡献为 1,否则为 0
然后计算三种情况下的前缀和,枚举区间最小值
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int sum[][]; int main()
{
int t,n,m;
string p="RGB",s;
cin>>t;
while(t--){
int ans=;
cin>>n>>m;
cin>>s;
for(int j=;j<;j++){
for(int i=;i<=n;i++){
if(s[i-]!=p[(i+j)%])
sum[i][j]=sum[i-][j]+;
else
sum[i][j]=sum[i-][j];
}
}
for(int i=;i<;i++)
for(int j=m;j<=n;j++)
ans=min(sum[j][i]-sum[j-m][i],ans);
cout<<ans<<endl;
}
return ;
}
最新文章
- 腾讯开放平台 手机QQ登录 错误码:110406 解决办法
- G1 垃圾收集器
- jQuery的加法运算.
- centos6.3安装MySQL 5.6(转)
- [改善Java代码]equals应该考虑null值的情景
- Asp.Net 之 基本控件FileUpload上传控件
- Java开发中常见的危险信号(中)
- CentOS 6使用iostat
- compilation 元素(ASP.NET 设置架构)
- php获取当天的开始时间和结束时间戳
- Python对于CSV文件的读取与写入
- 权限问题导致zabbix无法监控mysql
- PKUWC 2018 滚粗记
- 使用Excel VBA编程将网点的百度坐标转换后标注到高德地图上
- Linux启动时间优化-内核和用户空间启动优化实践
- hexo建站报错解决记录
- 用dockerfile创建jmeter的docker镜像
- 《Microsoft SQL Server 2012 T-SQL Fundamentals》
- 1.3 CPU简介
- Dubbo原理实现之与spring融合