P4170 [CQOI2007] 涂色 ( 区间dp

#include 
using namespace std;
using VI = vector;
using PII = pair;
using ll = long long;
using ull = unsigned long long;
string s;
int ct[60][60];//计算区间有多少个不同的字母
int n;
int dp[60][60];
int main(){
    cin>>s;
    int n = s.size();
    s = " " + s;
    //cout<

虽然是做出来了,但总感觉是我的连蒙带猜

其实就我就观察了几个小区间,大概猜测了一下结论然后再验证发现是正确的

将一个区间分成俩个小区间,分别对俩个小区间进行染色,如果头尾相同,那么在涂色是就可以第一次将整个区间涂个底色,-1次

如 A G   |    G B  A  前一个区间涂俩次 后一个区间涂俩次,但 头尾相同,第一次都可以全部涂上

      

你可能感兴趣的:(dp,算法,动态规划,图论)