博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #469 (Div. 2)C. Zebras
阅读量:6959 次
发布时间:2019-06-27

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

http://codeforces.com/contest/950/problem/C

题意:给定一个01字符串s,求它的子串,子串满足两个条件 :

①子串必须的01010....相互交换的(只含有0,其长度为1也是符合的)。

②子串的开头和结尾必须是0.

(字符串最大长度为200 000.)

如果不存在这样的子串则输出-1;否则输出一个k(k为子串的个数,k值不必的最值),接下来的k行,输出子串的长度和其在s上的序列数

 

这道题在比赛的时候卡了时间在第八组的时候TLE了,(当时脑壳瓦特了,一直想的是用数组来存答案。。。就是没有去想用vector来做),可能比较一更筋吧!其实这道题就是一个思维的想法,因为输出的答案可以不唯一,就看你是怎么获取01的(就是一个模拟吧!@~!~)

 

1 #include
2 3 using namespace std; 4 const int maxn=2e5+10; 5 char s[maxn]; 6 vector
v[maxn]; 7 8 int main() 9 {10 scanf("%s",s+1);11 int len=strlen(s+1);12 if(s[1]=='1')13 {14 printf("-1\n");15 return 0;16 }17 int cnt=0;18 int mx=0;19 for(int i=1;i<=len;i++)20 {21 if(s[i]=='0')22 v[cnt++].push_back(i);23 if(s[i]=='1')24 v[--cnt].push_back(i);25 if(cnt==0&&s[i+1]=='1')26 {27 printf("-1\n");28 return 0;29 }30 mx=max(mx,cnt);///mx就是记录vector数组的大小,也可以说是子串的个数31 }32 int ss=v[0].size();33 for(int i=0;i

 

转载于:https://www.cnblogs.com/Y-Meng/p/8538674.html

你可能感兴趣的文章
斑马技术邀您吃生鲜——以极速物流方案让您领鲜一步
查看>>
[转载]Windows网络编程系列教程之四:Select模型
查看>>
Linux系统目录结构
查看>>
一键系统维护工具 v 1.9
查看>>
第十一单元练习
查看>>
变量替换删除企业应用场景
查看>>
nautilus can't be used now,due to an unexpected error解决方法
查看>>
XenApp/XenDesktop 7.11新功能
查看>>
全面降低windows系统的安全隐患(一)[Web安全大家谈]
查看>>
2014年7月14日学习笔记--scriptreplay相关操作
查看>>
openstack resize 中遇到的问题
查看>>
AD-删除账户命令 Remove-ADUser
查看>>
第九单元练习题
查看>>
scponly 密钥无密码scp登录
查看>>
重置otrs登录密码
查看>>
CentOS下搭建SVN服务器
查看>>
#15、#16 网络的基本构成与网络的几协议
查看>>
视频客户端电脑版去广告补丁V 1.0
查看>>
HTTP 499 状态码 nginx下 499错误
查看>>
shell 九九乘法表
查看>>