#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i <= b; ++i) ; int n, f[N][N]; char a[N]; int main() { scanf(); n = strlen(a + ); memset(f, 0x3f, sizeof(f)); rep(i, , n) { f[i][i] = ; } rep(len, , n) rep(i, , n…
区间dp.. dp( l , r ) 表示让 [ l , r ] 这个区间都变成目标颜色的最少涂色次数. 考虑转移 : l == r 则 dp( l , r ) = 1 ( 显然 ) s[ l ] == s[ l + 1 ] 则 dp( l , r ) = dp( l + 1 , r ) s[ r ] == s[ r - 1 ] 则 dp( l , r ) = dp( l , r - 1 ) 因为只要在涂色时多涂一格就行了, 显然相等 , 所以转移一下之后更好做 s[ l ] == s…