双色条码最长保留
解题思路
留下的墨点必须仍按原顺序排成「浅色段 + 深色段 + 浅色段」,三段都允许为空。同一种颜色在自己那一段里全部留下不会更差,所以只要决定深色段覆盖原条码的哪一段下标。
- 设条码为 t,长度为 m。选定切分点 i,j(0≤i≤j≤m):下标落在 [0,i) 的位置只留 a,[i,j) 只留 b,[j,m) 只留 a。
- 用前缀计数 A(x)、B(x) 表示前 x 颗里浅色、深色各有多少。这一对切分的长度是
A(i)+B(j)−B(i)+A(m)−A(j),也就是 A(i)−B(i) 再加上只跟 j 有关的部分。