博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cf #345 div2 C(Vasya and String。双端队列)
阅读量:5821 次
发布时间:2019-06-18

本文共 1637 字,大约阅读时间需要 5 分钟。

题目链接:http://codeforces.com/contest/676/problem/C

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 /************************************************************************************************************** 7 题意:题意:给出一个由a和b两个字母组成的字符串,最多修改其中k个, 8 使得其中最长的连续同一字母子串最长,求最长的长度。 9 思路:10 1,用双端队列,以a为本体扫一遍,再以b为本体扫一遍。11 2,以a为本体的时候,扫到b的话,就加到双端队列里,如果双端队列里超过k个,就从左端弹出,12 保持里面剩k个。记录全a子序列的区间左端,13 3,弹出的时候更新 start = Q.pront()+1 (即第一个更换的元素位置+1)14 时刻更新ans = max(ans , i-strat+1)15 16 **************************************************************************************************************/17 string s;18 int main()19 {20 int n,k;21 while(cin>>n>>k){22 cin>>s;23 24 int start = 0;25 int ans = 0;26 deque
De;27 for(int i = 0;i < s.size();i ++){28 if(s[i] == 'b') De.push_back(i);29 if(De.size() > k){30 start = De.front()+1;31 De.pop_front();32 }33 ans = max(ans,i-start+1);34 }35 De.clear();36 start = 0;37 for(int i = 0;i < s.size();i ++){38 if(s[i] == 'a') De.push_back(i);39 if(De.size() > k){40 start = De.front()+1;41 De.pop_front();42 }43 ans = max(ans,i-start+1);44 }45 cout<
<
View Code

 

 

转载于:https://www.cnblogs.com/Jstyle-continue/p/6351951.html

你可能感兴趣的文章
【聚能聊有奖话题】Boring隧道掘进机完成首段挖掘,离未来交通还有多远?
查看>>
考研太苦逼没坚持下来!看苑老师视频有点上头
查看>>
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
【CQOI2011】放棋子
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
一周总结
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>