zoj1959四分数解题分析
时间: 2023-09-24 09:11:52 浏览: 201
ACM训练必备POJ ZOJ题目分类及解题思路
ZOJ1959是一道经典的动态规划题目,可以使用常规的动态规划算法来解决。但是,它也可以使用四分数解法来解决,这种方法更加高效,可以通过本题。
四分数解法的基本思路是:将字符串分成四份,分别求解它们的LCS,然后将四个LCS合并成一个LCS。具体来说,我们可以分别求解第一个字符串的前一半和第二个字符串的前一半的LCS,第一个字符串的后一半和第二个字符串的后一半的LCS,第一个字符串的前一半和第二个字符串的后一半的LCS,以及第一个字符串的后一半和第二个字符串的前一半的LCS。然后,我们可以将这四个LCS合并成一个LCS。
合并LCS时,我们可以使用归并排序的思路,将四个LCS按照长度从大到小排序,然后将它们依次插入到合并后的LCS中。插入时,如果LCS中已经存在该字符,则跳过,否则将该字符插入到LCS的最后面。最后,我们就可以得到合并后的LCS了。
四分数解法的时间复杂度为O(n^2logn),比常规的动态规划算法的时间复杂度O(n^2)更高效。因此,在对时间效率有较高要求时,可以考虑使用四分数解法来解决LCS问题。
以下是ZOJ1959的四分数解法的C++代码:
阅读全文