P4170 [CQOI2007]涂色 题解
首先先压缩字符串,连续的字符只取一个,例如AABDDDE
变换后为ABDE
,这样方便后面的DP操作了。
主要思想为区间DP dp[i][j]
定义为[i,j]这一段需要染色的最小次数。
核心代码
for(int len=1;len<n;++len)
{
for(int i=0;i+len<n;++i)
{
int ends=i+len;
if(res[i]==res[ends])
dp[i][ends]=min(dp[i][ends],min(dp[i+1][ends],dp[i][ends-1