Codeforces#354C (Div. 2) 二分答案
来源:互联网 发布:数据结构严蔚敏 知乎 编辑:程序博客网 时间:2024/06/05 01:01
题目链接: 原题
题意:题意很简单,有一个ab组成的串,大致就是找一个只有a或b的子串,里面有k个可以改变,问你最长这个子串能有多长?
思路:二分答案,O(n)判断就好了,之前要维护前缀和,很快就知道一个区间合法不合法了;
#include <bits/stdc++.h>using namespace std;int n,m;char s[1000005];int a[1000005],b[1000005];bool cal(int x){ if(x-a[x-1]<=m||x-b[x-1]<=m) return true; for(int i=1;i+x-1<n;i++){ if(x-(a[i+x-1]-a[i-1])<=m||x-(b[i+x-1]-b[i-1])<=m) return true; } return false;}int main(){ scanf("%d%d",&n,&m); scanf("%s",s); if(s[0]=='a') a[0]=1; else b[0]=1; for(int i=1;i<n;i++){ if(s[i]=='a')a[i]=a[i-1]+1; else a[i]=a[i-1]; if(s[i]=='b')b[i]=b[i-1]+1; else b[i]=b[i-1]; } int l=1,r=n; while(l<=r){ int mid=(l+r)/2; if(cal(mid)) l=mid+1; else r=mid-1; } cout<<l-1; return 0;}
0 0
- Codeforces#354C (Div. 2) 二分答案
- Codeforces Round #350 (Div. 2) (二分答案)
- Codeforces Round #425 (Div. 2) C-Strange Radiation(二分答案)
- Codeforces Round #354 (Div. 2) C (二分???)
- Codeforces Round #361 (Div. 2) C 二分
- Codeforces 460C Present 二分答案
- Codeforces 460C prsent(二分答案)
- codeforces 349C Mafia [贪心]/[二分答案]
- codeforces 801C Voltage Keepsake 二分答案
- Codeforces Round #218 (Div. 2) / 371C Hamburgers (二分)
- Codeforces #262 (Div. 2) C. Present(二分+贪心)
- Codeforces Round #262 (Div. 2) 460C. Present(二分)
- Codeforces #281 (Div. 2)C Vasya and Basketball(二分)
- Codeforces Round #307 (Div. 2) C. GukiZ hates Boxes(二分)
- Codeforces Round #360 (Div. 2) C DFS判断二分图
- Codeforces Round #336 (Div. 2) C 二分+dp
- Codeforces Round #364 (Div. 2) C. They Are Everywhere(二分)
- Codeforces Round #218 (Div. 2) C. Hamburgers【二分】
- 内联函数 —— C 中关键字 inline 用法解析
- CSS文本过长显示省略号
- yii2 session处理
- ubuntu物理内存不足,磁盘空间转换虚拟内存
- 关于高效学习工作的几本书
- Codeforces#354C (Div. 2) 二分答案
- OpenCV基本数据类型
- Docker 命令
- 按位与(&)按位或(|)按位异或(^)按位取反(~)左移(<<)右移(>>)
- Xshell与securecrt之间不同
- iOS学习之——Unknown type name 'UIColor" 的问题
- [leetcode] 【查找】 34. Search for a Range
- device eth0 does not seem to be present, delaying initialization
- Linux vmstat命令