题目链接
普通dp,可是看错题了。导致想不出来。题目意思是固定起点,即,在一个点进行操作。不停操作其所属的区间段。直至全部颜色相同。
下面是ac代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#define ll long long
using namespace std;
int f[5024][5024][2];
int su[5024];
int main()
{
int n;
while(~scanf("%d", &n))
{
for (int i = 1; i <= n; i++)
scanf("%d", &su[i]);
for (int i = 2; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
int k = i + j - 1;
if (k > n) continue;
f[j][k][0] = min (f[j+1][k][0] + (su[j] == su[j+1]?0:1), f[j+1][k][1] + (su[j] == su[k]?0:1));
f[j][k][1] = min (f[j][k-1][0] + (su[k] == su[j]?0:1), f[j][k-1][1] + (su[k] == su[k-1]?0:1));
}
}
printf("%d\n", min(f[1][n][0], f[1][n][1]));
}
return 0;
}