1. 程式人生 > >hdu6212 祖瑪(區間DP)

hdu6212 祖瑪(區間DP)

tro 位置 表示 中間 ron i+1 strong 就會 題意

題意

  有一個長度為n的01串,我們可以在某個地方插入一個0或者1,那麽如果有連續顏色相同的>=3個,那麽這段就會消去,兩邊的合攏。問將所有01串消去,最少需要插入多少個。(n<=200)

分析

  肯定會考慮區間DP

  將連續的0或者1縮起來,a[i]表示i位置的個數(要麽1個要麽2個)

  容易分析轉移的話有以下兩種

    1、直接將區間[i,j]分成兩半,各自合並,即dp[i][j]=min(dp[i][k]+dp[k+1][j])

    2、將中間的一部分合並掉,兩邊直接對碰消去,即dp[i][j]=min(dp[i+1][j-1]+(a[i]+a[j]<3)

  還有一種難想的轉移,就是在中間找個k,i j k同色,通過刪除[i+1,k-1] [k+1,j-1] 讓i j k 三消,這裏註意要判斷a[i]+a[j]+a[k]<=4,否則不會三消,會先雙消

  

hdu6212 祖瑪(區間DP)