[USACO1.1.4]坏掉的项链Broken Necklace
P1203 [USACO1.1]坏掉的项链Broken Necklace
标签 搜索/枚举 USACO
难度 普及-
题目描述
你有一条由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
/*
如果s[i]='r',rl[i]=rl[i-1]+1,bl[i]=0;
如果s[i]='b', bl[i]=bl[i-1]+1,rl[i]=0;
如果s[i]='w',bl[i]=bl[i-1]+1,rl[i]=rl[i-1]+1。
(DP+mod) 用模运算来处理环
这样初值不能简单地用bl[0]=rl[0]=0来表示,
我们没有任何理由认为0位置应当为初始位置(在用模运算处理环的情况下)
应该在项链中找到第一个'b',
则此位置的rl,rr都为0,
从这个位置按照上面的递归关系进行DP计算rl,rr,
如果没有'b',那么整个项链都可看做红色,直接输出n即可.
同理,可以计算bl,br以及最后的结果.
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define MAXN 10001
using namespace std;
int n,tot,ans;
char s[MAXN];
bool flag;
int mod(int n,int m){
while(n<0){
n+=m;
}
return n%m;
}
int slove(int x,int p){
char ch='w';//记为前驱.
int i,t;
if(p>0) i=x;
else i=mod(x-1,n);//在mod意义下的下标.
for(t=0;t<n;t++,i=mod(i+p,n)){//i表示往前/后移动.
if(ch=='w'&&s[i]!='w'){
ch=s[i];
}
if(ch!='w'&&ch!=s[i]&&s[i]!='w'){//e.g.:brb 不连续剪掉.
break;
}
}
return t;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>s[i];
}
for(int i=0;i<n;i++){
tot=slove(i,1)+slove(i,-1);//向左右扩展.
ans=max(tot,ans);
ans=min(n,ans);
}
printf("%d",ans);
return 0;
}
[USACO1.1.4]坏掉的项链Broken Necklace的更多相关文章
- 【P1203】 【USACO1.1】坏掉的项链Broken Necklace
P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 ...
- P1203 [USACO1.1]坏掉的项链Broken Necklace
P1203 [USACO1.1]坏掉的项链Broken Necklace不错的断环为链的模拟题,开成三倍,有很多细节要考虑,比如总长度要<=n,开头第一个是w等等. #include<bi ...
- 题解 P1203 【[USACO1.1]坏掉的项链Broken Necklace】
[USACO1.1]坏掉的项链Broken Necklace 22892 破碎的项链 方法一:很容易想到枚举断点,再分别两头找,但是要注意很多细节 #include<iostream> # ...
- 洛谷 P1203 [USACO1.1]坏掉的项链Broken Necklace
坏掉的项链Broken Necklace 难度:★ Code: #include <iostream> #include <cstdio> #include <cstri ...
- 洛谷P1203 [USACO1.1]坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- [USACO1.1]坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- AC日记——[USACO1.1]坏掉的项链Broken Necklace 洛谷 P1203
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- USACO Training Section 1.1 坏掉的项链Broken Necklace
题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A ...
- Broken Necklace 坏掉的项链 USACO 模拟(易错)
1004: 1.1.4Broken Necklace 坏掉的项链 时间限制: 1 Sec 内存限制: 128 MB提交: 11 解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目 ...
随机推荐
- HDOJ-ACM1023(JAVA)
题意:输入栈的大小,输出可能的出栈顺序的个数. 这道题,如果做了1022,那就只要在上面改改就行了, 第一想法是加上全排列-----结果是正确的,但是绝对会超时 验证性的实现了:(Time Limit ...
- Extending JavaScript Natives
Most built-in JavaScript types are constructors whose prototypes contain the methods and other prope ...
- 【开发工具 - Git】之Git使用案例
本帖主要介绍一下Git在实际项目开发中的使用流程,包括克隆.暂存.提交.推送.拉取.分支.冲突解决等,暂时还不包括回退. 1.首先需要安装Git,下一步下一步就行,这里就不说了.值得一提的是,如果Gi ...
- Mac 解决SSH登录服务器终端乱码
一.Mac自带的终端 ssh 连接Linux 乱码,可用如下方法解决 终端 --> 偏好设置 --> 描述文件 --> 高级 --> 设为GBK 即可 二.secureCRT ...
- Java-Web监听器
在WEB端实现监听实质: 实现一系列的监听接口(实现相应的接口,覆写各接口中相应的方法,在相应的事件触发的时候会执行自己的监听器中的覆写的方法,在各个方法中完成自己想要的操作,从而实现了监听) 监听- ...
- LINUX系统镜像下载总汇
LINUX系统fedora.centos.debian.ubuntu ISO下载汇总 http://mirrors.sohu.com http://linux.ilvgo.cn/ ftp://gent ...
- arcgis通过 Python 使用工具 获得结果信息
通过 Python 使用工具 ArcGIS 10 每个地理处理工具都具有一组固定的参数,这些参数为工具提供执行所需的信息.工具通常具有定义一个或多个数据集的输入参数,这些数据集一般用于生成新的输出数据 ...
- C#多线程编程(1):线程的启动
转:http://blog.csdn.net/zhoufoxcn/article/details/4402999 在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来 ...
- bit,byte,char,string区别与基本类型认识
bit.byte.位.字节.汉字的关系 1 bit = 1 二进制数据 1 byte = 8 bit 1 字母 = 1 byte = 8 bit ...
- mysql优化概析
优化从几个方面来说: 表结构设计 适当索引(主键 普通 唯一 全文组合) mysql本身配置 硬件配置 SQL语句优化 存储过程 分表 分区 读写分离 清理垃圾数据