1260 CQOI2007 塗色 區間DP

2022-09-14 16:24:23 字數 803 閱讀 9387

假設你有一條長度為5的木版,初始時沒有塗過任何顏色。你希望把它的5個單位長度分別塗上紅、綠、藍、綠、紅色,用乙個長度為5的字串表示這個目標:rgbgr。 每次你可以把一段連續的木版塗成乙個給定的顏色,後塗的顏色覆蓋先塗的顏色。例如第一次把木版塗成rrrrr,第二次塗成rgggr,第三次塗成rgbgr,達到目標。 用盡量少的塗色次數達到目標。

輸入僅一行,包含乙個長度為n的字串,即塗色目標。字串中的每個字元都是乙個大寫字母,不同的字母代表不同顏色,相同的字母代表相同顏色。

僅一行,包含乙個數,即最少的塗色次數。

【樣例輸入1】

aaaaa

【樣例輸入1】

rgbgr

【樣例輸出1】

1【樣例輸出1】

340%的資料滿足:1<=n<=10

100%的資料滿足:1<=n<=50

一開始想的是對於區間x,y,如果兩端顏色相等dp[x][y]=dp中間那段不相等的+1

但這麼做並不能涵蓋所有情況,狀態可能有中斷

所有當兩端相同時,dp[x][y]=min(dp[x][y-1],dp[x+1][y])即可

若不相同就劃分成兩個區間,取和的最小值。

1 #include2 #include3 #include4

using

namespace

std;

5char a[101];6

int n,dp[101][101];7

intmain()

823 printf("

%d",dp[0][n-1

]);24 }

題解 CQOI2007 塗色

假設你有一條長度為 55 的木版,初始時沒有塗過任何顏色。你希望把它的 5 55個單位長度分別塗上紅 綠 藍 綠 紅色,用乙個長度為5 55的字串表示這個目標 rgbgr。每次你可以把一段連續的木版塗成乙個給定的顏色,後塗的顏色覆蓋先塗的顏色。例如第一次把木版塗成rrrrr,第二次塗成rgggr,第...

區間dp P4170 CQOI2007 塗色

傳送門 題目描述 假設你有一條長度為5的木版,初始時沒有塗過任何顏色。你希望把它的5個單位長度分別塗上紅 綠 藍 綠 紅色,用乙個長度為5的字串表示這個目標 rgbgr。每次你可以把一段連續的木版塗成乙個給定的顏色,後塗的顏色覆蓋先塗的顏色。例如第一次把木版塗成rrrrr,第二次塗成rgggr,第三...

P4170 CQOI2007 塗色 題解

同步 原題鏈結 簡要題意 一開始你有乙個長度為 n nn 的無色串,每次可以對乙個區間染上相同的顏色。問最少多少次可以形成目標串。告訴你,這題的藍是假的,太假了,資料也太弱了。完全是個暴力選手亂碾標算用的,其實本題的時間複雜度完全可以做到 o n 3 o n 3 o n3 第一眼看資料範圍還以為是大...