关于此题正确解法
查看原帖
关于此题正确解法
384822
Eltaos_xingyu楼主2024/5/24 09:45

首先是自己想到了四个分散的元素可以合并,如:

10
1 2 2 1 3 3 1 4 4 1

答案是 33,可以先消 2 再消 4 再消 3。

这个是比较好解决的,观察到只有 44 个长度为 11 的元素块才能这样合并,再记录一个数组记录 33 个长度为 11 的元素块合并的最小代价,可以和之前的数组简单合并得到这种情况的答案。时间复杂度仍然是 O(n3)O(n^3)。

但是查看之前的讨论发现还有其他的 hack 数据:

11
1 2 2 2 1 1 1 3 3 3 1

我的代码输出 44,大概是先把中间的 1 消掉,再把 2,3 消掉,最后再把两侧的 1 消掉。但是存在更优的只用 33 步的解,就是把中间的 33 个 11 拆开变成 2+12+1,然后这个时候再按原来的策略做就只需要 22 步,具体过程为:

1 2 2 2 1 1 1 3 3 3 1
1 2 2 2 1 1 2 1 3 3 3 1
-> 1 2 2 2 1 (1) 1 2 1 3 3 3 1
1 1 3 3 3 1

这样的话,我们每次可能需要枚举插入什么元素来分隔两段,这样无法保证复杂度。

而且说不一定还有其他的情况可以 hack,因此此题真正的正确做法到底是什么?

2024/5/24 09:45
加载中...