P4170 CQOI2007 塗色 區間dp

2021-09-05 11:51:43 字數 512 閱讀 4535

假設你有一條長度為5的木版,初始時沒有塗過任何顏色。你希望把它的5個單位長度分別塗上紅、綠、藍、綠、紅色,用乙個長度為5的字串表示這個目標:rgbgr。

每次你可以把一段連續的木版塗成乙個給定的顏色,後塗的顏色覆蓋先塗的顏色。例如第一次把木版塗成rrrrr,第二次塗成rgggr,第三次塗成rgbgr,達到目標。

用盡量少的塗色次數達到目標。

很簡單的區間dp,dp[i][j]由dp[i][k]+dp[k+1][j](判斷是否可減一步),然後頭尾特判一下,即拆的有一部分為乙個字元。

#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define ll long long

#define mod 10007

int dp[55][55];

int main()}}

cout

}

P4170 CQOI2007 塗色 題解

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

洛谷P4170 CQOI2007 塗色

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

洛谷 P4170 CQOI2007 塗色

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