优化:尽量减少绘画错误

use*_*848 5 math optimization

您将获得一个m*n网格,其中每个单元格都标记为"b"或"w".你也有黑色和白色的颜料.您可以使用k笔画,每种颜色(黑色或白色),笔画定义为来自同一行的连续无色细胞的着色(这意味着笔画不能超出行的长度,如果你在该行程结束的行结束之前拿起画笔.目的是最大限度地减少错误数量,如果您绘制的颜色错误或细胞仍未上漆,则会发生错误.什么是最优策略?

Ant*_*nte 0

知道一行问题的解决方案(给定 BW 行上 k 笔画的最小错误数是多少)可用于解决问题。

对于每一行,列出给定笔划数的错误数k_i = [0, 1, ..., min k needed to cover i-th row]。现在我们有n列表(不同大小的)。要查找在哪些行中使用“k”笔划,只需k从列表开头迭代弹出其中笔划覆盖大多数单元格的元素就足够了。

所以,主要任务是解决一行问题,我不知道如何:-)

令 C 为连续颜色变化的次数。覆盖行的最小笔画数是 a ceil( (C+1)/2 )。这可以通过用第一个笔划替换笔划颜色来覆盖整行和最后笔划中最远的变化之间的下一个笔划来完成。第一个笔划具有一个(或两个)末端的颜色。

我认为,使用类似的方法,当没有足够的笔划来覆盖整行时,可以找到错误数量。必须省略一种颜色的某些范围。这是通过以下方式完成的:

  • 从不在边界上的颜色开始(省略第一笔),

  • 有些笔画不是与最后笔画最远的变化之间,而是在较近的变化之间。

我不确定,但似乎找到几个最小的相同颜色部分就足够了,这就是错误。这些部分距末端的距离可能很重要。

那是现在...