Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
再一个AC,纪念一下,顺便说说思路从高到低遍历珍珠,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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator