壞掉的項鍊

2021-10-04 22:07:46 字數 1514 閱讀 8445

題目鏈結

題目描述

你有一條由 nnn 個紅色的,白色的,或藍色的珠子組成的項鍊,珠子是隨意安排的。 這裡是 n=29n=29n=29 的兩個例子:

第一和第二個珠子在中已經被作記號。

假如你要在一些點打破項鍊,展開成一條直線,然後從一端開始收集同顏色的珠子直到你遇到乙個不同的顏色珠子,在另一端做同樣的事(顏色可能與在這之前收集的不同)。 確定應該在**打破項鍊來收集到最大數目的珠子。

例如,在 a 中的項鍊中,在珠子 999 和珠子 101010 或珠子 242424 和珠子 252525 之間打斷項鍊可以收集到 888 個珠子。

白色珠子什麼意思?

在一些項鍊中還包括白色的珠子(如b) 所示。

當收集珠子的時候,乙個被遇到的白色珠子可以被當做紅色也可以被當做藍色。

表現含有白珠項鍊的字串將會包括三個符號 r,b,w 。

寫乙個程式來確定從一條被給出的項鍊可以收集到的珠子最大數目。

輸入格式

第一行乙個正整數 nnn ,表示珠子數目。 第二行一串長度為 nnn 的字串, 每個字元是 r , b 或 w。

輸出格式

輸出一行乙個整數,表示從給出的項鍊中可以收集到的珠子的最大數量。

輸入輸出樣例

輸入 #1

29wwwbbrwrbrbrrbrbrwrwwrbwrwrrb

輸出 #1

說明/提示

【資料範圍】

對於 100%100%100% 的資料,3≤n≤3503\le n \le 3503≤n≤350

題目翻譯來自nocow。

usaco training section 1.1

想不到怎麼用dp解,還好資料範圍很小,列舉每乙個斷點即可。

int l[

1000

], r[

1000];

intmain()

ff =0;

if(!ff && a[i +1]

=='r'

) ff =1;

elseif(

!ff && a[i +1]

=='b'

) ff =2;

for(

int j = i +

2; j <= i + n -

1; j++)}

int ans =0;

for(

int i = n +

1; i <=

2* n; i++

) ans =

max(l[i]

+ r[i]

, ans)

; cout <<

min(ans, n)

<< endl;

return0;

}

壞掉的項鍊

描述 你有一條由n個紅色的,白色的,或藍色的珠子組成的項鍊 3 n 350 珠子是隨意安排的。這裡是 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 ...

壞掉的項鍊 破環成鏈

你有一條由n個紅色的,白色的,或藍色的珠子組成的項鍊 3 n 350 珠子是隨意安排的。這裡是 n 29 的二個例子 第一和第二個珠子在中已經被作記號。brbrrrbbbrrrrrbrrbbrbbbbrrrrb 假如你要在一些點打破項鍊,展開成一條直線,然後從一端開始收集同顏色的珠子直到你遇到乙個不...

EOJ 3188 壞掉的彩燈

bob 有一串節日彩燈,彩燈共有 4 種顏色 r,b,y,g 表示 可惜有一些燈泡已經壞掉了 表示 bob 並不記得彩燈的序列,只記得這串彩燈的任意 4 個連續的燈泡顏色都不相同。bob 需要統計每種顏色壞掉的彩燈有多少個。0123下標對應rbyg四種顏色。其中tot和ans陣列儲存每種顏色的燈應有...