你有一條由 n 個珠子串成的項鍊,珠子的顏色有紅、白、藍三種,珠子在項鍊中呈隨機分布。
例如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
b b b b
b b r b
r r b r
b r r r
b r r r
r r r b
r b r r r w
樣例 a 樣例 b
r 紅珠子
b 藍珠子
w 白珠子
對項鍊的第一顆珠子和第二顆珠子進行了標記。
樣例 a 中的項鍊只包含藍紅兩種顏色的珠子,將所有珠子按順序記錄顏色為:
brbrrrbbbrrrrrbrrbbrbbbbrrrrb
假設你現在要將項鍊從某個點處斷開,並將斷開後的項鍊拉直擺放,然後從一端開始收集相同顏色的珠子,直到碰到另一種顏色的珠子為止,完成後在另一端進行相同的操作(這次收集的珠子的顏色可能與之前收集的顏色並不相同)。
現在,你需要判斷在項鍊的哪一處將項鍊斷開,可以使得我們收集珠子的數量達到最多。
例如,對於樣例 a 提供的項鍊,我們在 9 號珠子和 10號珠子之間斷開項鍊,或者在 24 號珠子和 25 號珠子之間斷開項鍊,可以收集到最多 8 個珠子。
另外,某些項鍊除藍紅珠子外,還包含白珠子,如樣例 b 所示。
收集珠子時,如果我們遇到了白色珠子,那麼我們可以將它視為紅色或藍色,並將其塗上相應的顏色。
表示項鍊的字串只包含 r,w,b三種字元。
請你編寫乙個程式,求出我們可以收集珠子的最大數目。
輸入格式
第一行包含整數 n,表示珠子的數量。
第二行包含乙個由 n 個字元構成的字串,字串中只包含r,w,b 三種字元。
輸出格式
共一行,包含乙個整數表示我們可以收集珠子的最大數目。
資料範圍
3≤n≤350
輸入樣例:
29wwwbbrwrbrbrrbrbrwrwwrbwrwrrb
輸出樣例:
11
#include
#include
#include
using
namespace std;
const
int n =
710;
int n;
char s[n]
;int
get(
char c)
intmain()
while
(l <= r &&
(s[r]
=='w'
||(right |
get(s[r]))
!=3))
res =
max(res, cnt);}
cout << res << endl;
return0;
}
USACO 1 1 破碎的項鍊
description 你有一條由n個紅色的,白色的,或藍色的珠子組成的項鍊 3 n 350 珠子是隨意安排的。這裡是 n 29 的二個例子 r 代表 紅色的珠子 b 代表 藍色的珠子 w 代表 白色的珠子 第一和第二個珠子在中已經被作記號。brbrrrbbbrrrrrbrrbbrbbbbrrrrb...
建立單項鏈結的六點不可錯過新技巧
一 軟文傳揚寫些原創形式作品的無關您上彀站正題的報道。發表到各web。讓他們正在作品中加上你web的鏈結。一天兩天。你正在baidu徵採框輸出你頒布公布的標題問題問題足球考分。便可看到有n多web 您web的形式。也便是叫做的寫ruan文,切切某個也講無關性的。2 錨翰墨鏈結提高關頭字目的詞排名錨翰...
C 的列舉小技巧
列舉是什麼呢?列舉是乙個值型別,包含一組命名的常量,如以下的 public enum color 這裡是最簡單的定義列舉的方式,沒有設定任何的東西,所以預設情況下,enum的型別是int型的,並且是從0開始往下遞增地,但是我們可以修改以上說的東西,比如以下 public enum color sho...