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

再一个AC,纪念一下,顺便说说思路

Posted by lkq1992yeah at 2010-03-30 08:06:22 on Problem 1260
从高到低遍历珍珠,f[i][j]为第i种珍珠转移到第j种珍珠后的总开销。
f[i][j] = f[i + 1][j] + need[i] * price[j]    (j >i)
f[i][j] = min(f[i + 1][i + 1], ...... , f[i + 1][n - 1]) + (need[i] + 10) * price[i]

对于第一个方程,为什么会把i转移到j呢?因为ij之间的所有等级的珍珠全部被转移走了(否则i就不会转移到j,而是转移到比它等级高的珍珠中离i最近的),所以i+1一定转移到了j,同理,i+ 2, i + 3, ...... ,j - 1 都转移到了j。我们从高到低遍历珍珠等级,f[i][j]是代表满足i等级珍珠已经转移到j的这个条件时,目前所花的最小开销,f[i][j]已经涵盖了i+1,i+2,...... ,n-1这些等级的珍珠的开销了。第一个递推公式就是这么来的。

第二个没什么好说的,在前面的情况中找个最小的就行了,因为此等级的珍珠完全不需要考虑前面珍珠的排列情况(因为不需要转移)。

对了,注意不要#define INF 99999999,还是小了,我就在这里贡献了一个WA,%>_<%

自己独立想出的DP,可能有不足之处,望大家指正。

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