HDU 2746 ——String painter
2016-05-18 21:36
465 查看
题目: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方法我还在思考中。。。未完待续
这道题,大多数博客都是一种解法:就是先得到无颜色的字符串涂色为所需字符串的最小次数(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方法我还在思考中。。。未完待续
相关文章推荐
- uva 253 Cube painting
- LightOj--1071--Baker Vai(拆点最大费用流)
- HDU 1023 Train Problem II (卡特兰数)未解决未解决未解决未解决
- WINCE MFC 自绘控件的WM_PAINT与WM_ERASEBKGND、WM_TIMER 问题总结
- 336(see). Palindrome Pairs 5.(see)
- 人工智能:一种现代方法 第四版 翻译序言
- codeforces Trains and Statistic DP
- hdu 2473 Junk-Mail Filter【并查集好题、建立虚拟节点】
- HDU 3487-Play with Chain-splay
- rails 学习笔记
- Saiku初解
- su: cannot set user id: Resource temporarily unavailable
- Codeforces Round #353 (Div. 2)E. Trains and Statistic
- svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
- ASM磁盘超过disk_repair_time导致磁盘状态为forcing
- ASM磁盘超过disk_repair_time导致磁盘状态为forcing
- Saiku AdminConsole
- ASM磁盘超过disk_repair_time导致磁盘状态为forcing
- copy和mutableCopy,retain
- Jmeter报告优化