HDU 2746 ——String painter
题目:http://acm.hdu.edu.cn/showproblem.php?pid=2476
这道题,大多数博客都是一种解法:就是先得到无颜色的字符串涂色为所需字符串的最小次数(1),然后基于此去找当原先的字符串并不是无颜色的而是有固定颜色时的最小值(2)。怎样找呢?因为字符串原先已有颜色,所以(1)中有许多涂色是不必要的,它的最小值并不是真正的最小值,故只需在(1)的基础上“做减法”,找到真正的最小值就好了。
但是,其实这样子做是不对的,因为(1)的情况下涂色的最小次数是不一定大于(2)的,即如果只是想着在(1)的基础上做减法是可能带来的错误的,可能要通过加法来修正(1)的最小次数!
比如:当第一个字符串为ab,第二个字符串为cc时,就会出现错误:正确答案为2,但是上面的做法得到的答案却是1,因为无颜色的字符串涂色成cc当然只需要涂色1次,然后我们在(1)的基础上试图做减法,当然不可能得到正确答案2!
但是因为HDU这道题的测试数据没有能够发现该错误,所以才会有一大堆博客在介绍这种方法。。。:)
这种做法的题解一大堆。。都是错在了这里。。它们中的几篇题解链接如下:
http://blog.csdn.net/libin56842/article/details/9708807
http://blog.csdn.net/a601025382s/article/details/37737303
然而,正确的dp方法我还在思考中。。。未完待续