解法一:区间dp O(n^3) 递推

思路:

首先我们需要澄清两点与普通石子合并的差别。

第一:他是环状的,需要破环处理。

第二:选完以后披萨是会消掉的。

但是,分析方法还是不变,考虑 最后一步  哪三块披萨 进行消除。考虑线性情况下,它最后一步有两种情况。第一种就是左边部分和右边部分作为两个独立部分消掉了。不然,最后L,R端点的披萨一定会剩到最后,和中间的某个值消掉.

那么我区间dp如何转移呢。对于任意一个区间[L,R].两种转移情况

dp[l][r] = dp[l][k] + dp[k + 1][r]. //这也就是说,dp[l][r]正好被分为两个区间。最优解合并.

dp[l][r] = dp[l][k - 1] + dp[k + 1][r] + v[k].   //这也就是说,最后三块披萨分别坐落在L,k,R这三个点.而且中间的若干值已经被消除了.

但是此题记忆化搜索复杂度会比较高,毕竟(2 * n)^3.所以要卡过去只能用递推式减小常数.

解法二:递推dp O(n^2) 

结论:实质上就是在n个物品里选取n/3个物品

证明:我们可以把要选取的元素跟它右边的元素绑定,这样总共就变成了n/3个单块的披萨,以及n/3个双块的披萨。每次,我们总可以找到一个左边有单块披萨的双块披萨,然后选取它。这样到最后,我们一定可以取到我们需要的n/3块披萨。

由上述的结论,我们可以利用简单的动态规划解决,令d(i , j , 0/1)表示前i个物品恰好选j个不相邻的物品.0/1代表第一个物品选或不选.(因为是环,首尾不能选)



解法三:贪心 + 双向链表 O(nlogn) 待补.