神仙题,看了半天题解才看明白... 因为题目里说如果没有m,会自动默认m在最前面. 我们设计状态为dp[l][r][0/1]为在区间l到r中有没有m的最小长度. 转移:枚举我们要压缩的起点,dp[l][i][1]+dp[i+1][r][1]+1,加一是指我们要压缩后半段,在断点处加上一个m. 如果我们不压缩后半段,那转移就为dp[l][i][1]+r-i,因为后面不动,就直接加上. 如果发现它可以压缩,直接dp[l][mid][0]+1,注意tag为0. Code #include<iostre…