HDU 2746 ——String painter

本文深入探讨了一道HDU编程题的解题思路,指出流行的博客方法存在误区,并通过实例说明了正确处理有固定颜色字符串的重要性。文章还列举了几篇错误题解链接,提醒开发者避免常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目: 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.youkuaiyun.com/libin56842/article/details/9708807

       http://blog.youkuaiyun.com/a601025382s/article/details/37737303

  然而,正确的dp方法我还在思考中。。。未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值