题目链接:https://codeforces.com/problemset/problem/1196/D2


题意:

q 个询问,每个查询将给你一个由 n 个字符组成的字符串s,每个字符都是 “R”、“G” 或 “B”。

求出更改初始字符串 s 中的最小字符数,以便更改后将有一个长度为 k 的字符串,该字符串是 s 的子字符串,也是无限字符串 “RGBRGBRGB…” 的子字符串

思路:

在无限字符串中有三种子串:“RGB...”,“GBR...”,“BRG...”

在这三种不同情况下,将所求字符串与原字符串比较

若不同,则贡献为 1,否则为 0

然后计算三种情况下的前缀和,枚举区间最小值

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int sum[200006][3];
 5
 6 int main()
 7 {
 8     int t,n,m;
 9     string p="RGB",s;
10     cin>>t;
11     while(t--){
12         int ans=2000000;
13         cin>>n>>m;
14         cin>>s;
15         for(int j=0;j<3;j++){
16             for(int i=1;i<=n;i++){
17                 if(s[i-1]!=p[(i+j)%3])
18                     sum[i][j]=sum[i-1][j]+1;
19                 else
20                     sum[i][j]=sum[i-1][j];
21             }
22         }
23         for(int i=0;i<3;i++)
24             for(int j=m;j<=n;j++)
25                 ans=min(sum[j][i]-sum[j-m][i],ans);
26         cout<<ans<<endl;
27         }
28     return 0;
29 }

转载于:https://www.cnblogs.com/Yanick/p/11290518.html

[题解]RGB Substring (hard version)-前缀和(codeforces 1196D2)相关推荐

  1. Codeforces 1196D RGB Substring

    (easy version) https://codeforces.com/contest/1196/problem/D1 (hard version) https://codeforces.com/ ...

  2. Codeforces Round #741 (Div. 2) D2. Two Hundred Twenty One (hard version) 前缀和 + 分段模型

    传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的串,+++代表111,−-−代表−1-1−1,让后有qqq个询问,每次询问[l,r][l,r][l,r]区间,将这段区间的数拿出来,设为 ...

  3. 575 div3RGB Substring (hard version)——思维-

    [题目描述] The only difference between easy and hard versions is the size of the input. You are given a ...

  4. 【LeetCode】No.5. Longest Palindromic Substring -- Java Version

    题目链接: https://leetcode.com/problems/longest-palindromic-substring/ 1. 题目介绍(最长回文子串) Given a string s, ...

  5. CSP认证201809-4 再卖菜[C++题解]:差分约束、前缀和

    文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 对于a0,a1,...,ana_0, a_1,...,a_na0​,a1​,...,an​,经过计算相邻的数的平均值得到b0,b1, ...

  6. LeetCode题解-3-Longest Substring Without Repeating Characters

    2019独角兽企业重金招聘Python工程师标准>>> 解题思路 首先要读懂题目,它要求的是找到最长的子串,并且子串中没有出现重复的字符. 我的想法,是用一个map存储每个字符最后出 ...

  7. CodeForce-1196D1-RGB Substring (easy version)

    原题链接 题目大意: 给出一串由'R', 'G', 'B'组成的长度为n的字符串,在里面选出一个长度为k的子串,要求在改变最少字符的情况下同时也是"RGBRGBRGB-"的子串. ...

  8. 线性结构 —— 前缀和

    [概述] 前缀和是一种及其优秀的线性结构,也是一种重要的思想,能极大的降低区间查询的时间复杂度. 前缀和又分为一维前缀和.二维前缀和,其与差分数组密切相关,关于差分数组:点击这里 [一维前缀和] 假设 ...

  9. 字符串处理 —— 模拟与暴力

    [概述] 在某些题目中,需要对字符串进行处理,不需要很复杂的算法,只需要按照题意进行模拟或暴力枚举即可得出答案. [例题] 1.简单模拟 Minimum Ternary String(CF-1009B ...

最新文章

  1. 详细解剖大型H5单页面应用的核心技术点
  2. 转载:python pyppeteer手动、离线安装 chromium
  3. LeetCode Algorithm 704. 二分查找
  4. ubuntu上搭建php,ubuntu10.04上搭建php网站运行环境
  5. 高等数学下-赵立军-北京大学出版社-题解-练习10.4
  6. Java ObjectOutputStream writeFloat()方法与示例
  7. 给数据减肥 让MySQL数据库跑的更快
  8. mariadb中文手册_mariadb中文手册
  9. 最全静态网页模板网站
  10. 《人生哲理》二.人生苦短,别懂得太晚了...
  11. python里的点_Python里面这些点,据说80%的新手都会一脸懵逼
  12. gcat广告电商云南百收涉及传销新模式:社交电商消费返利
  13. 我来对比一下阿里云服务器和腾讯云服务器的优劣和区别
  14. 国人函数概念,稀里糊涂,误人子弟
  15. 2019宁夏计算机考试报名时间,2019年上半年宁夏计算机二级考试报名时间
  16. FAT32转NTFS、NTFS无损转FAT32
  17. oracle存储过程超详细使用手册
  18. Arduino基础1
  19. web前端期末大作业 html+css+javascript火影忍者网页设计实例 动漫网站制作
  20. 【医学影像 | 个人记录】骨盆

热门文章

  1. c语言常用数据类型转换整理
  2. c语言函数库学习~sscanf~格式化输入
  3. linux access函数判断文件存取权限
  4. ASP.NET获取IP的6种方法
  5. floyd和迪杰斯特拉算法的路径记录方法。
  6. android ble mesh,Android 蓝牙Mesh组网代码详解
  7. java自适应table_【进阶之路】包罗万象——JAVA中的锁
  8. android 刷新某条数据_Android 支持刷新、加载更多、带反弹效果的RecyclerView
  9. python如何保存列表_Python 基础知识全篇-列表(Lists)
  10. java 异常的分类并举例_Java异常处理中的一些特殊情况举例