n(n<=500)个数,第i个数为ai(1<=ai<=1e3),
每次你可以选择两个相邻的且相等(不妨值为v)的数,将这两个数替换为一个v+1的数,后面的数会跟上来
问以这样的方式合并,a[]数组最后最少能剩几个数
https://www.cnblogs.com/zxytxdy/p/12454472.html
学了区间dp之后,感觉这个题好sb啊,可惜当时不会orz
两种做法,
第一种,前一半是合并的区间dp,dp[l][r]维护这一段能合成一段的最大值,
只要能合并成一段,就加一个seg[l,r],代价为1,最后用所有seg来为最终的结果做分段的区间dp
第二种,dp[l][r]仍维护这一段能合成一段的最大值,ans[l][r]代表这一段最少剩几个,
如果能合成一段,ans[l][r]显然为1,否则ans[l][r]=min(ans[l][r],ans[l][k]+ans[k+1][r])(l<=k 代码
#include