AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203
题目描述
你有一条由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。
输出格式:
输入输出样例
29 wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
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相关推荐
- 洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace
P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 ...
- 洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace 动态规划
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- P1203 [USACO1.1]坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- [USACO1.1]坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- 洛谷 1203 [USACO1.1]坏掉的项链Broken Necklace
题目: https://www.luogu.org/problem/show?pid=1203 标签是搜索和动态规划--: O(n^2)纯模拟; 这个题交了三遍才A: 思路: 记两个数组:Next和p ...
- 【洛谷】P1203 [USACO1.1]坏掉的项链Broken Necklace
1. 前言 这是一道经典的dp题,时限:20min 环形dp通常转换成两个字符串拼接在一起从而覆盖住所有情况. 使用两次dp,分别求解分割点左侧和右侧的最大值.这种dp下再分左右区间的问题也有很多. ...
- USACO Training Section 1.1 坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- 坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- usaco1.1坏掉的项链
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
最新文章
- Kali Linux***测试
- R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)
- Binwalk固件分析利器
- c语言全排列算法_一文学会回溯搜索算法解题技巧
- VALSE 视觉资源汇总(视频+PPT+文章解读,持续更新)
- 文件上传获取file的全路径名_Java中的File类与I/O流
- C语言逗号表达式 - C语言零基础入门教程
- django-演练-英雄-作品-对应关系
- 【javajni】jni入门篇
- L1-002. 打印沙漏-PAT团体程序设计天梯赛GPLT
- 2021-09-07
- 在软件项目或者产品中,POC(为观点提供证明)和Demo(样本,示例)的实质区别是什么?
- android系统音效均衡方案
- CADD课程学习(13)-- 研究蛋白小分子动态相互作用-III(蛋白配体复合物 GROMACS)
- 雷达相关书籍学习顺序推荐
- 诡异大阳飙升动因何在
- c语言实验报告总结通用版,C语言实训心得体会
- B站视频最新下载方法
- 单调队列优化dp--bzoj5185: [Usaco2018 Jan]Lifeguards
- 区块链技术要用到什么开发语言?
热门文章
- 平面波超声成像(Python代码+CIRS体模超声数据)
- User-Defined Privacy-Preserving Traffic Monitoring Against n-by-1 Jamming Attack
- MySQL最最基础篇
- Wireshark网络抓包分析
- 计算机视觉实验LAB——照相机标定与位姿计算(上)
- dhcp服务器ipv4显示红色向下箭头,双栈客户端通过IPv4 DHCP SERVER分配DNS服务器完成IPv6地址解析典型案例...
- Android开发学习之以CameraAPI方式实现相机功能(一)——快速实现相机
- 西门子S7-1200 模拟量如何编程
- 给HTML中的块元素设置背景图片
- WSN无线传感网络-节点分簇功能python实现