Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

我来发个容易理解的动规证明吧

Posted by xuchang at 2010-11-01 12:05:50 on Problem 1260 and last updated at 2010-11-01 12:07:33
首先证明最优解中肯定不会有交叉的替换,即在质量为a<b<j<c<d的情况下,如果a被c替换,那么b也一定要被c替换 假设在最优解中存在:a被c替换且b不被c替换的情况:
1.b不被任何替换 那么此时把a换成用b替换 得到比原来更优的解,错误
2.b被j替换,此时把a换成用j替换 得到比原来更优的解,错误
3.b被d替换,此时把b换成用c替换 得到比原来更优的解,错误
因此,不存在交叉的替换,那么最优解分为下面两种情况:
1.不存在断点,即所有的都用最大一种替换,dp[c]=(a[1]+...+a[c]+10)*p[c]
2.存在断点,最后一个断点为i,那么最优解必为dp[i]+(a[i+1]+..+a[c]+10)*p[c]
每个点都有可能是最后一个断点,因此产生了我们的DP方程:
dp[i]=min(dp[j]+(a[j+1]+..+a[i]+10)*p[i])
把dp[0]设成0的话 2就包含了1 dp[c]就是最后的答案

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator