更好的阅读体验 CF1920E 被这种题卡了,脸都不要了。 仔细读题,发现序列可以分成两部分( 0 0 0 和 1 1 1)来考虑。 在合法序列中,对于一个 1 1 1,它产生的子串贡献一定是(假设与上一个 1 1 1 之间有 x x x 个 0 0 0,与下一个 1 1 1 之间有 y y y 个 0 0 0): ( x + 1 ) ( y + 1 ) (x+1)(y+1) (x+1)(y+1) 如果去 DP 这 n n