USACO斷開的項鍊 新技巧列舉)

2021-10-16 09:01:46 字數 2150 閱讀 4107

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