AGC035D
题面
给定 \(n\) 个数字。每次选择三个连续的位置,删去中间的数,将中间的数的值加在左右的两个数上。
最小化剩下的两个数的和。
数据范围:\(n\le 18\) 。
题解
正向考虑不好做,那么我们就倒着考虑。
考虑最后一个被删掉的数 \(x\),对最终答案的贡献都是 \(2\) 倍,然后区间 \([1,n]\) 就分成了两边:\([1,x],[x,n]\) 。
这时候然后我们发现,对于一个区间 \([l,r]\) ,若 \(l\) 对最终答案的贡献为 \(x\) 倍,\(r\) 的为 \(y\) 倍,那么在 \([l,r]\) 中最后一个被删掉的数对答案的贡献就是 \(x+y\) 倍。
所以这像一个区间 dp 的模型,但是我们无法记录 \(x,y\) ,很显然 \(x,y\) 会很大。
但其实我们不记录,直接跑不记忆化的搜索复杂度是正确的:
因为 \(T(n)=2\sum_{i=1}^{n-1}T(i)\) ,所以 \(T(n)=O(3^n)\) 。
启发
- 区间dp不记忆化的复杂度是 \(O(3^n)\) 的。