Broken Necklace

题解:

模拟。

枚举每一个地方断开,之后从断开点往前、往后寻找连续子序列就行了,不过要注意w的处理,还有答案不可能超过n。

{

ID:h1956701

LANG:PASCAL

PROB:beads

}

var l,i,x,ans:longint;

s,s1:ansistring;

function h(k:longint):longint;

begin

if k=0 then k:=l;

exit(k);

end;

function pd(k,p:longint):longint;

var ans,x:longint;

begin

ans:=0;

while s[k]=‘w‘ do

begin

inc(ans);

if ans>=l then exit(l);

k:=h((k+p)mod l);

end;

x:=k;

while (s[k]=s[x])or(s[k]=‘w‘) do

begin

inc(ans);

if ans>=l then exit(l);

k:=h((k+p)mod l);

end;

exit(ans);

end;

begin

assign(input,‘beads.in‘);

reset(input);

assign(output,‘beads.out‘);

rewrite(output);

readln(l);

readln(s1);

for i:=1 to l do

begin

s:=s1;

x:=pd(h(i-1),-1)+pd(i,1);

if x>ans then ans:=x;

end;

if ans>l then ans:=l;

writeln(ans);

close(input);

close(output);

end.

时间: 2024-10-01 08:09:28

Broken Necklace的相关文章

Section1.1 -- Broken Necklace

Broken Necklace You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples for n=29: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r

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

P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收

USACO 1.1 Broken Necklace

Broken Necklace You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples for n=29: 1 2 1 2 r b b r b r r b r b b b r r b r r r w r b r w w b b r r

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

P1203 [USACO1.1]坏掉的项链Broken Necklace 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 第一和第二个珠子在图片中已经被作记号. 图片 A 中的项链可以用下面的字符串表示: brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些点打破项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同的颜色珠子,在另一端做同样的事(颜色可能与在这之前收

题解 P1203 【[USACO1.1]坏掉的项链Broken Necklace】

[USACO1.1]坏掉的项链Broken Necklace 22892 破碎的项链 方法一:很容易想到枚举断点,再分别两头找,但是要注意很多细节 #include<iostream> #include<string> #include<cstdio> using namespace std; string s; int n,l,r,ll,rr,tmp,ans; inline int calc(int x) { ll=s[x],rr=s[x+1],l=x-1,r=x+2

1.1.4 Broken Necklace

You have a necklace of N red, white, or blue beads (3<=N<=350) some of which are red, others blue, and others white, arranged at random. Here are two examples for n=29: 1 2                               1 2 r b b r                           b r r b

USACO section1.1 Broken Necklace

1 /* 2 ID: vincent63 3 LANG: C 4 TASK: beads 5 */ 6 #include <stdio.h> 7 #include<stdlib.h> 8 #include<string.h> 9 int findmax(char s[],int n){ 10 int i,j,count,max,l,r; 11 char left,right; 12 max=0; 13 count=0; 14 int p; 15 for(i=0,j=1;

USACO 1.1 Broken Necklace(USACO官方)

本题我不会写,囧,看了官方的代码,算法复杂度为O(n^2),学习下: /* ID:twd30651 PROG:beads LANG:C++ */ #include<iostream> #include<fstream> #include<string.h> using namespace std; int N; char s[400]; int len; int mod(int n,int m) { while(n<0)n+=m; return n%m;//值得学

Broken Necklace 坏掉的项链 USACO 模拟(易错)

1004: 1.1.4Broken Necklace 坏掉的项链 时间限制: 1 Sec  内存限制: 128 MB提交: 11  解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1.1.4Broken Necklace 坏掉的项链 (beads.pas/c/cpp) 题目描述 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的. 这里是 n=29 的二个例子: 1 2 1 2 r b b r b r r b r b b b

USACO&lt;s1.1.4:Broken Necklace&gt;字符串

题意:一串环形的字符串代表一串项链,该字符串包含b,r,w,分别代表蓝色,红色,白色,白色可任意转换为红色或蓝色.问在哪一个点处打来项链的环,分别向左边和右边计算红色珠子串或蓝色珠子串,蓝红珠子数目总和的最大值为结果~ KEY:输入的字符串是直线型的,要把它模拟成环形,我起初的做法是用循环把数组一直往前移,这就相当于在环形里操作.还有一个做法是,strcat那段字符串,然后用mod运算也能模拟.这是我在这道题学到的最关键的~然后,就是很简单的问题了,if判断就行了.开始wa是有两处错,一是把n-