你有一条由 N 个珠子串成的项链,珠子的颜色有红、白、蓝三种,珠子在项链中呈随机分布。

例如N=29 时,两个项链的示例如下所示:

            1 2                               1 2r b b r                           b r r br         b                       b         br           r                     b           rr             r                   w             rb               r                 w               wb                 b               r                 rb                 b               b                 bb                 b               r                 br               r                 b               rb             r                   r             rb           r                     r           rr       r                         r       br b r                             r r w样例 A                            样例 Br 红珠子b 蓝珠子w 白珠子

图片对项链的第一颗珠子和第二颗珠子进行了标记。

样例 A 中的项链只包含蓝红两种颜色的珠子,将所有珠子按顺序记录颜色为:

brbrrrbbbrrrrrbrrbbrbbbbrrrrb

假设你现在要将项链从某个点处断开,并将断开后的项链拉直摆放,然后从一端开始收集相同颜色的珠子,直到碰到另一种颜色的珠子为止,完成后在另一端进行相同的操作(这次收集的珠子的颜色可能与之前收集的颜色并不相同)。

现在,你需要判断在项链的哪一处将项链断开,可以使得我们收集珠子的数量达到最多。

例如,对于样例 A 提供的项链,我们在 9 号珠子和 10号珠子之间断开项链,或者在 24 号珠子和 25 号珠子之间断开项链,可以收集到最多 8 个珠子。

另外,某些项链除蓝红珠子外,还包含白珠子,如样例 B 所示。

收集珠子时,如果我们遇到了白色珠子,那么我们可以将它视为红色或蓝色,并将其涂上相应的颜色。

表示项链的字符串只包含 r,w,b三种字符。

请你编写一个程序,求出我们可以收集珠子的最大数目。

输入格式
第一行包含整数 N,表示珠子的数量。

第二行包含一个由 N 个字符构成的字符串,字符串中只包含r,w,b 三种字符。

输出格式
共一行,包含一个整数表示我们可以收集珠子的最大数目。

数据范围
3≤N≤350
输入样例:
29
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
输出样例:
11
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 710;int n;
char s[N];int get(char c)
{if (c == 'b') return 1;//蓝色return 2;//红色
}int main()
{cin >> n >> s;for (int i = 0; i < n; i ++ ) s[i + n] = s[i];//这个操作神奇int res = 0;for (int i = 0; i < n; i ++ ){int l = i, r = i + n - 1;//最多n个int cnt = 0, left = 0, right = 0;while (l <= r && (s[l] == 'w' || (left | get(s[l])) != 3)){if (s[l] != 'w') left |= get(s[l]);cnt ++, l ++ ;}while (l <= r && (s[r] == 'w' || (right | get(s[r])) != 3)){if (s[r] != 'w') right |= get(s[r]);cnt ++, r -- ;}res = max(res, cnt);}cout << res << endl;return 0;
}

USACO断开的项链(新技巧枚举)相关推荐

  1. 如何修复AIrPods不断与iPhone断开连接的小技巧

    AIrPods与iPhone配合使用时,AIrPods是否经常会间歇性断开连接?其实很多人会碰到这种情况,原因很多,可能是由于故障和设置冲突带来的,以下方法可以解决大多数情况下AIrPods和iPho ...

  2. 写互联网文案的新技巧

    新媒体的崛起,互联网信息时代的到来,都为企业和品牌的推广文案创造了更多的可能.一本正经阐述产品功能的文案,早就已经被我们自动过滤掉了. 试问现在,在昏昏欲睡的公交车厢上,你是愿意看一篇中规中矩的广告文 ...

  3. 淘宝店铺托管拉新技巧有哪些?

    对于新店来说,没有流量及访客是一种常见的现象,但如果卖家不及时的进行拉新工作,那么店铺是无法获取更多资源的,今天小编就来详细为大家说一下店铺拉新技巧. 1.利用精准关键词拉新 淘宝卖家可以为店铺选择转 ...

  4. 华为p20Android怎么解开,【华为P20】解锁EMUI8.1系统下华为P20的各种玩法新技巧

    本帖最后由 哀暮殇 于 2018-5-5 20:30 编辑 提起华为P20系列,联想到的就是令人深刻的首创徕卡后置三摄以及其强大的拍照尤其是夜景,但是除了这些,华为P20系列还搭载了基于Android ...

  5. 计算机新安装系统后桌面上有什么图标,电脑重装系统后桌面文件如何恢复?新技巧分享...

    原标题:电脑重装系统后桌面文件如何恢复?新技巧分享 电脑重装系统后桌面文件如何恢复?当我们电脑重装系统之后,桌面上一般就只剩下一个"回收站"的图标,很多朋友不知道怎么找回这些丢失的 ...

  6. 谈运营之提高玩家活跃度的新技巧

    棋牌游戏的运营过程中有很多小细节需要运营商特别注意,玩家活跃度的设置也是其中的一点,提高玩家活跃度对于棋牌游戏运营来说非常重要,如何有效提高玩家的活跃度呢?这就需要一点的技巧了,下面,让新2网址科技为 ...

  7. Windows Server 2008服务器管理新技巧6则第1/4页

    在我们接触了Windows Server 2008服务器系统后,如果再沿袭以前的管理经验来维护Windows Server 2008服务器时,就会发现许多经验已经失效了. 在长期管理维护服务器系统的过 ...

  8. 怀旧服显示已从服务器断开连接,魔兽世界怀旧服服务器进不去排队怎么办 服务器断开连接解决方法技巧分享...

    魔兽世界怀旧服最近上线了,其中服务器进不去怎么办?今天上午玩家过多导致服务器负载,出现了各种玩家进不去.排队.断开连接等问题,很多小伙伴都不太了解,那么下面就和91小编一起来看一下吧!希望可以帮助到大 ...

  9. 撼龙图怎么开鸿蒙炁灵,【一人之下】新手入门必看攻略,萌新技巧超详细攻略...

    <一人之下>新手该怎么玩呢?新手需要掌握什么技巧呢?小编为大家整理了<一人之下>新手入门超详细攻略,一起来看看吧. 一.装备 6件防具.1把武器.6个饰品.还有炁灵和铭文. 装 ...

最新文章

  1. AOI光学自动检测技术 | 基本原理与设备构成
  2. SAP QM 含有HUM的检验批做UD时候的不同之处?
  3. 计算机语言pandas,计算机语言python100道pandas(含答案)
  4. Visual Studio 技能GET
  5. HDU - 5572 An Easy Physics Problem(几何-碰撞问题)
  6. C#图解教程 第六章 深入理解类
  7. HDMI视频光端机传输故障如何调试?
  8. JVM垃圾收集器与内存分配策略学习总结
  9. fs和php的区别,优缺点评测飞科fs318和fs360有啥区别?哪个好?真实评测体验曝光...
  10. 设置webstorm实时预览看这一篇就够了,5分钟解决!!
  11. windows下创建目录函数_mkdir
  12. sas导入txt出现中文乱码解决方案
  13. 不要在考虑需求之前更多的在意你的职业镀金
  14. linux怎么运行teamv,TeamViewer 9发布-在Linux下安装运行
  15. 解决vscode中getch()函数报错。C语言。getch()的头文件。
  16. C语言中取值符(*)与取地址符()
  17. 怎样为Windows7系统设置快速启动栏
  18. Android安卓——实现发短信功能的代码
  19. android u盘 uuid,Android4.4KitKat支持u盘功能
  20. springboot入门到入坟

热门文章

  1. android实现音乐跳动效果
  2. 大丰学计算机技术学校,江苏大丰中等专业学校2021年招生简章
  3. Eclipse/STS 异常解决:A cycle was detected in the build
  4. IDEA快捷键(常用)、IDEA恢复默认快捷键
  5. 学计算机专业的学生买什么电脑,设计类学生买什么电脑
  6. 什么是限流?你真的了解吗?
  7. Serialized Multi-Layer Multi-Head Attention for Neural Speaker Embedding阅读笔记
  8. android imageview 锯齿,Android 圆形ImageView 怎样解决边缘锯齿的有关问题
  9. mysql上限_MySQL自增ID达到上限的解决方法
  10. android aidl权限,android AIDL