2019牛客多校第三场B Crazy Binary String 思维
2024-09-04 06:23:25
Crazy Binary String 思维
题意
给出01串,给出定义:一个串里面0和1的个数相同,求 满足定义的最长子序列和子串
分析
子序列好求,就是0 1个数,字串需要思考一下。实在没有思路可以看看数组范围(n<=1e5),很像nlogn或者n的算法,这个时候就要考虑一下二分和前缀和优化,二分感觉⑧太行,这个时候研究一下前缀和的性质,发现0 为-1,1为1的时候,前缀和相同的两个位置中间恰好可以构成一个满足定义的串,所以这题就解决了。没有思路的时候多发散一下思维,从多角度思考一下问题。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+4;
char s[maxn];
map<int,int>mp;
int main(){
int n;
scanf("%d",&n);
scanf("%s",s+1);
int tmp=0;
int ans=0;
int ling =0,yi=0;
mp[0]=0;
for(int i=1;i<=n;i++){
if(s[i]=='1')tmp++,yi++;
else tmp--,ling++;
if(!mp.count(tmp)){
mp[tmp]=i;
}
else
ans=max(ans,i-mp[tmp]);
}
printf("%d %d\n",ans,2*min(ling,yi));
return 0;
}
最新文章
- Cmd Markdown编辑器简明语法手册
- iOS开发之cell多按钮
- web开发者谷歌浏览器常用插件
- Autofac的高级使用——Autofac.2.6.3.862
- Shader 之 顶点变形
- 延迟加载图片插件LazyLoad.js的使用方法
- 【iCore3 双核心板_FPGA】实验十七:基于I2C总线的ARM与FPGA通信实验
- iOS:给Git仓库上传代码时,超过100M会被拒绝(例如github和oschina)
- Silverlight C1.Silverlight.FlexGrid 表格动态列
- 电视直播用的.m3u8 PC端和移动端地址 【流媒体播放测试专用】
- 2016 Al-Baath University Training Camp Contest-1 C
- 无限极分类,传递一个父ID,返回所有子集
- hdu Max Sum Plus Plus(dp+滚动数组)
- Windows Phone 8.1 应用生命周期
- sql语句,实践证明了某种情况下not in的效率高于not exists
- Asp数据转Json
- Java 11新功能抢先了解
- Python——面向对象的特性
- 获取百度地图POI数据二(准备搜索关键词)
- View体系第一篇:基础