SRM 454 DIV 1 Level 2

就是说用火柴来表示数。。给你一个18位以下的10进制数。。
最多移动K根火柴。。求出能形成多少不同的数。。
dp啊。。
F[i][plus][minus]表示前i个中,移进plus根火柴,移开minus根火柴,有几种不同的数。。
然后预处理或者直接手打出火柴两两之间的移动关系( 有人就是手打的)。。
就可以方便的DP了。。
关键就是这个状态是3维的。。一开始我一直以为是2维的。。想了半天也没结果。。
答案就是Sum{F[n][i][i]|0<=i<=K}。。
感觉就是这道题如果从记忆化搜索的角度来想比较方便。。现在我发现记忆化搜索在很多时候比子问题重叠的思考方法要重要多了。。

Leave a Reply

Your email address will not be published. Required fields are marked *