题目描述

你有一条由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

思路:

  把序列处理成链,复制后接后面;

  然后正着处理b,r,反着处理b,r;

  然后枚举断点取最优值;

来,上代码:

#include <cstdio>
#include <cstring>
#include <iostream>using namespace std;int n,len,ans,stlb[1001],stlr[1001],strb[1001],strr[1001];char ch[1001];int main()
{cin>>n;cin>>ch+1;for(int i=1;i<=n;i++) ch[i+n]=ch[i];len=strlen(ch+1);for(int i=1;i<=len;i++){if(ch[i]=='b'){if(ch[i]==ch[i-1]||ch[i-1]=='w') stlb[i]=stlb[i-1];stlb[i]++;}else if(ch[i]=='r'){if(ch[i]==ch[i-1]||ch[i-1]=='w') stlr[i]=stlr[i-1];stlr[i]++;}else{stlr[i]=stlr[i-1]+1;stlb[i]=stlb[i-1]+1;}}for(int i=len;i>=1;i--){if(ch[i]=='b'){if(ch[i]==ch[i+1]||ch[i+1]=='w') strb[i]=strb[i+1];strb[i]++;}else if(ch[i]=='r'){if(ch[i]==ch[i+1]||ch[i+1]=='w') strr[i]=strr[i+1];strr[i]++;}else{strr[i]=strr[i+1]+1;strb[i]=strb[i+1]+1;}}for(int i=1;i<=len;i++) ans=max(ans,max(stlr[i],stlb[i])+max(strr[i+1],strb[i+1]));cout<<min(ans,n);return 0;
}

转载于:https://www.cnblogs.com/IUUUUUUUskyyy/p/6492587.html

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

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

    P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 ...

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

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

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

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

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

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

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

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

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

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

  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. Kali Linux***测试
  2. R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)
  3. Binwalk固件分析利器
  4. c语言全排列算法_一文学会回溯搜索算法解题技巧
  5. VALSE 视觉资源汇总(视频+PPT+文章解读,持续更新)
  6. 文件上传获取file的全路径名_Java中的File类与I/O流
  7. C语言逗号表达式 - C语言零基础入门教程
  8. django-演练-英雄-作品-对应关系
  9. 【javajni】jni入门篇
  10. L1-002. 打印沙漏-PAT团体程序设计天梯赛GPLT
  11. 2021-09-07
  12. 在软件项目或者产品中,POC(为观点提供证明)和Demo(样本,示例)的实质区别是什么?
  13. android系统音效均衡方案
  14. CADD课程学习(13)-- 研究蛋白小分子动态相互作用-III(蛋白配体复合物 GROMACS)
  15. 雷达相关书籍学习顺序推荐
  16. 诡异大阳飙升动因何在
  17. c语言实验报告总结通用版,C语言实训心得体会
  18. B站视频最新下载方法
  19. 单调队列优化dp--bzoj5185: [Usaco2018 Jan]Lifeguards
  20. 区块链技术要用到什么开发语言?

热门文章

  1. 平面波超声成像(Python代码+CIRS体模超声数据)
  2. User-Defined Privacy-Preserving Traffic Monitoring Against n-by-1 Jamming Attack
  3. MySQL最最基础篇
  4. Wireshark网络抓包分析
  5. 计算机视觉实验LAB——照相机标定与位姿计算(上)
  6. dhcp服务器ipv4显示红色向下箭头,双栈客户端通过IPv4 DHCP SERVER分配DNS服务器完成IPv6地址解析典型案例...
  7. Android开发学习之以CameraAPI方式实现相机功能(一)——快速实现相机
  8. 西门子S7-1200 模拟量如何编程
  9. 给HTML中的块元素设置背景图片
  10. WSN无线传感网络-节点分簇功能python实现