P1203 [USACO1.1]坏掉的项链Broken Necklace

题目描述

你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的。 这里是 n=29 的二个例子:

第一和第二个珠子在图片中已经被作记号。

图片 A 中的项链可以用下面的字符串表示:

brbrrrbbbrrrrrbrrbbrbbbbrrrrb

假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收集的不同)。 确定应该在哪里打破项链来收集到最大数目的珠子。

例如,在图片 A 中的项链中,在珠子 9 和珠子 10 或珠子 24 和珠子 25 之间打断项链可以收集到8个珠子。

白色珠子什么意思?

在一些项链中还包括白色的珠子(如图片B) 所示。

当收集珠子的时候,一个被遇到的白色珠子可以被当做红色也可以被当做蓝色。

表现含有白珠项链的字符串将会包括三个符号 r , b 和 w 。

写一个程序来确定从一条被给出的项链可以收集到的珠子最大数目。

输入输出格式

输入格式:

第 1 行: N, 珠子的数目

第 2 行: 一串长度为N的字符串, 每个字符是 r , b 或 w。

输出格式:

输出一行一个整数,表示从给出的项链中可以收集到的珠子的最大数量。

输入输出样例

输入样例#1:

29
wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

输出样例#1:

11

说明

题目翻译来自NOCOW。

USACO Training Section 1.1

思路:模拟。

#include <iostream>
#include <algorithm>
using namespace std;
string a;
int f(int x){int s=0;char a1=a[x];char b2=a[x+1];for(int i=x;;i--){if(a[i]==a1)s++;else if(a[i]=='w')    s++;else    break;}for(int i=x+1;;i++){if(a[i]==b2)    s++;else if(a[i]=='w')    s++;else    break;}return s;
}
int main(){int ans,n;ans=-1;cin>>n;cin>>a;a=a+a+a;for(int i=n;i<2*n;i++){if(a[i]==a[i+1])    continue;if(a[i]=='w'){a[i]='r';ans=max(ans,f(i));a[i]='b';ans=max(ans,f(i));a[i]='w';}ans=max(ans,f(i));}ans=min(ans,n);if(ans==-1)    ans=n;cout<<ans<<endl;return 0;
}

转载于:https://www.cnblogs.com/cangT-Tlan/p/7425331.html

洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace相关推荐

  1. 洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace 动态规划

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  2. 洛谷 1203 [USACO1.1]坏掉的项链Broken Necklace

    题目: https://www.luogu.org/problem/show?pid=1203 标签是搜索和动态规划--: O(n^2)纯模拟; 这个题交了三遍才A: 思路: 记两个数组:Next和p ...

  3. 【洛谷】P1203 [USACO1.1]坏掉的项链Broken Necklace

    1. 前言 这是一道经典的dp题,时限:20min 环形dp通常转换成两个字符串拼接在一起从而覆盖住所有情况. 使用两次dp,分别求解分割点左侧和右侧的最大值.这种dp下再分左右区间的问题也有很多. ...

  4. P1203 [USACO1.1]坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  5. AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  6. [USACO1.1]坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  7. USACO Training Section 1.1 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  8. 坏掉的项链Broken Necklace

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

  9. usaco1.1坏掉的项链

    题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...

最新文章

  1. Python列表之for循环应用
  2. SQL 语句之insert语句插入数据:若表中有重复的主键或数据继续插入解决方案
  3. [Remoting专题系列] 十一:事件
  4. python提取数据库数据_Python如何读取MySQL数据库表数据
  5. javaScript一种优化模式-初始化时分支
  6. Server 2008 R2 AD RMS完整部署:一、用户创建篇
  7. 两片74161实现60进制_74ls161集成60进制加法计数 - 74LS161集成计数器电路(2、3、4、6、8、10、60进制计数器)...
  8. Oracle Enterprise Manager打不开的解决方法
  9. WPS Office 2019 For Linux 8722 发布,引入pdf组件
  10. 前端面试题目笔记-5
  11. Win测试——使用Spy++获取窗口标题
  12. 各种推荐算法的 benchmark
  13. 未安装任何音频设备解决方案(2021/12/27)
  14. 英语口语中的音变现象及读音规则
  15. csp php,CSP策略及绕过方法
  16. pyqt5:利用QFileDialog从本地选择图片\文本文档显示到label、保存图片\label文本到本地(附代码)
  17. 计算机考研数据结构怎么复习,计算机专业考研科目数据结构如何复习?
  18. Hexo博客添加搜索功能
  19. 【Java系列】数据库系统的可视化界面开发
  20. Pspice、Multisim仿真实验

热门文章

  1. 怎么压缩照片大小?照片怎么改大小kb?
  2. Vmware的安装并启动虚拟机
  3. 中建大兴之星智慧园区观摩会搭载鲸会务微站提升会议智能化服务
  4. 【2023最新】腾讯云注册域名及服务器使用宝塔绑定域名教程
  5. 一个让全球人沉迷的游戏背后需要怎样的团队?
  6. Faster-Rcnn-TF 输入图像尺寸变换
  7. 有一行文字,具体长度和内容自行约定,设计两个函数:(1)count函数:统计并输出其中英文字母、数字以及其他字符的个数。(2)code函数:译密码,将字符串中的字母按下述规律转换:将字母A变成
  8. 如何使用nVidia Falcor渲染框架进行GPU加速的图片处理
  9. Android java面试题收集
  10. C盘突然满了,找了好几天。。。