[题解]RGB Substring (hard version)-前缀和(codeforces 1196D2)
题目链接: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)相关推荐
- Codeforces 1196D RGB Substring
(easy version) https://codeforces.com/contest/1196/problem/D1 (hard version) https://codeforces.com/ ...
- Codeforces Round #741 (Div. 2) D2. Two Hundred Twenty One (hard version) 前缀和 + 分段模型
传送门 文章目录 题意: 思路: 题意: 给你一个长度为nnn的串,+++代表111,−-−代表−1-1−1,让后有qqq个询问,每次询问[l,r][l,r][l,r]区间,将这段区间的数拿出来,设为 ...
- 575 div3RGB Substring (hard version)——思维-
[题目描述] The only difference between easy and hard versions is the size of the input. You are given a ...
- 【LeetCode】No.5. Longest Palindromic Substring -- Java Version
题目链接: https://leetcode.com/problems/longest-palindromic-substring/ 1. 题目介绍(最长回文子串) Given a string s, ...
- CSP认证201809-4 再卖菜[C++题解]:差分约束、前缀和
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 对于a0,a1,...,ana_0, a_1,...,a_na0,a1,...,an,经过计算相邻的数的平均值得到b0,b1, ...
- LeetCode题解-3-Longest Substring Without Repeating Characters
2019独角兽企业重金招聘Python工程师标准>>> 解题思路 首先要读懂题目,它要求的是找到最长的子串,并且子串中没有出现重复的字符. 我的想法,是用一个map存储每个字符最后出 ...
- CodeForce-1196D1-RGB Substring (easy version)
原题链接 题目大意: 给出一串由'R', 'G', 'B'组成的长度为n的字符串,在里面选出一个长度为k的子串,要求在改变最少字符的情况下同时也是"RGBRGBRGB-"的子串. ...
- 线性结构 —— 前缀和
[概述] 前缀和是一种及其优秀的线性结构,也是一种重要的思想,能极大的降低区间查询的时间复杂度. 前缀和又分为一维前缀和.二维前缀和,其与差分数组密切相关,关于差分数组:点击这里 [一维前缀和] 假设 ...
- 字符串处理 —— 模拟与暴力
[概述] 在某些题目中,需要对字符串进行处理,不需要很复杂的算法,只需要按照题意进行模拟或暴力枚举即可得出答案. [例题] 1.简单模拟 Minimum Ternary String(CF-1009B ...
最新文章
- 详细解剖大型H5单页面应用的核心技术点
- 转载:python pyppeteer手动、离线安装 chromium
- LeetCode Algorithm 704. 二分查找
- ubuntu上搭建php,ubuntu10.04上搭建php网站运行环境
- 高等数学下-赵立军-北京大学出版社-题解-练习10.4
- Java ObjectOutputStream writeFloat()方法与示例
- 给数据减肥 让MySQL数据库跑的更快
- mariadb中文手册_mariadb中文手册
- 最全静态网页模板网站
- 《人生哲理》二.人生苦短,别懂得太晚了...
- python里的点_Python里面这些点,据说80%的新手都会一脸懵逼
- gcat广告电商云南百收涉及传销新模式:社交电商消费返利
- 我来对比一下阿里云服务器和腾讯云服务器的优劣和区别
- 国人函数概念,稀里糊涂,误人子弟
- 2019宁夏计算机考试报名时间,2019年上半年宁夏计算机二级考试报名时间
- FAT32转NTFS、NTFS无损转FAT32
- oracle存储过程超详细使用手册
- Arduino基础1
- web前端期末大作业 html+css+javascript火影忍者网页设计实例 动漫网站制作
- 【医学影像 | 个人记录】骨盆
热门文章
- c语言常用数据类型转换整理
- c语言函数库学习~sscanf~格式化输入
- linux access函数判断文件存取权限
- ASP.NET获取IP的6种方法
- floyd和迪杰斯特拉算法的路径记录方法。
- android ble mesh,Android 蓝牙Mesh组网代码详解
- java自适应table_【进阶之路】包罗万象——JAVA中的锁
- android 刷新某条数据_Android 支持刷新、加载更多、带反弹效果的RecyclerView
- python如何保存列表_Python 基础知识全篇-列表(Lists)
- java 异常的分类并举例_Java异常处理中的一些特殊情况举例