码迷,mamicode.com
首页 > 其他好文 > 详细

第十六周 12.14---12.20

时间:2015-12-14 09:21:10      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

新的一周>_<

---12.14

补之前的一场 cf

cf 604c

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

给一串长度为 n 的 01串,可以翻转一个区间,问能够得到的最长的01序列是多长(可以不连续)

没有想出来,,,

其实可以发现,翻转一个区间,能够给原串带来2个贡献,所以算出原来的最长的加上 2 和 n 取最小值就好了

技术分享
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<vector>
 6 using namespace std;
 7 
 8 const int maxn = 1e5+5;
 9 char s[maxn];
10 int n;
11 
12 void solve(){
13     int c = 0;
14     for(int i = 1;i <= n;){
15         c++;
16         int j = i;
17         while(j <= n && s[i] == s[j]) j++;
18         i = j;
19     }
20     int ans = 0;
21     ans = min(c+2,n);
22     printf("%d\n",ans);
23 }
24 
25 int main(){
26     while(scanf("%d",&n) != EOF){
27         scanf("%s",s+1);
28         solve();
29     }
30     return 0;
31 }
View Code

 

第十六周 12.14---12.20

标签:

原文地址:http://www.cnblogs.com/wuyuewoniu/p/5044062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!