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

32ms AC 思路与优化

Posted by Shinjikun at 2010-12-13 09:43:16 on Problem 3014
思路在网上随处可见,引用最多的是chenyajun大牛的文章:
http://www.chenyajun.com/2010/05/24/4830
参考大牛的代码,谈一谈优化(大牛已经做的就不提了)。

首先,2维DP开2维数组是没有必要的,因为后一行的计算结果之间没有依赖性,因此在自己身上进行更新即可。迅速把O(n^2)空间变成O(n)。
其次,内层循环中的判断可以省去,因为当且仅当j大于i的时候会出发,因此把j的初值设为i+1即可。
然后,当n>m时,很简单就是直接的整数划分问题,与n无关(相当于划分的前面用0补齐)。用http://www.mathpages.com/home/kmath383.htm 给的p(n) = SUM  (-1)^(k-1)  p(n - k(3k+-1)/2)可以在O(n^(3/2))时间内计算出结果。
最后,因为当n*2+1>=m>m时,可以推知dp[n][m]=dp[n][n]-sum(dp[n][i],{i,1,m-n-1})-1,因此这种情况可以也可以用O(m^(3/2))计算出dp[n][m]。

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