- 当前区间允许重复时,分成两段分别压缩且两段都可以重复,那么为了不使前后发生冲突中间断开时需要加一个MMM。
- 只压缩前面一段,后面一段不动。
- 如果当前区间能被分成两端一样的前面一段不压缩,后面一段重复前面的。
代码:
#includeusing namespace std;int len,f[55][55][2];char s[55];inline bool check(int l,int r){ int mid=(r-l+1)/2; if((r-l+1)&1)return 0; for(int i=l;i<=(l+r)/2;++i)if(s[i]!=s[i+mid])return 0; return 1;}inline int dfs(int l,int r,bool op){ if(~f[l][r][op])return f[l][r][op]; if(l==r)return f[l][r][op]=1; f[l][r][op]=r-l+1; if(op)for(int i=l;i