Loading

Zhengrui #3425. binstr

差点场切了,必须写个题解啊。

官方题解写什么屎,反正我是看不懂的。

首先考虑一段区间合并成 \(0/1\) 的充要条件:

  • 合成 \(0\)\(0\) 的数量最多比 \(1\)\(1\) 个,并且必须要有 \(0\)
  • 合成 \(1\)\(1\) 的数量必须比 \(0\) 多。

有个升级版结论是:

  • 一个区间会被合成 \(0\) 当且仅当 \(0\)\(1\) 多一个,否则绝对不优,这就是官方题解里提到的东西。

然后 DP,设 \(f_{i, 0/1}\) 表示到了 \(i\),最后是 \(0/1\) 的最大长度是多少,搞个 \(g\) 记录以下最少次数,发现随便记录一些东西可以用线段树简单做,考虑到相邻两个位置相差 \(1\) 其实也可以线性,随便做做就完了。

posted @ 2025-11-09 16:19  Alexande  阅读(5)  评论(0)    收藏  举报