具体题目及提交:http://www.rqnoj.cn/Problem_57.html
题目大意:
现在找GF需要花钱,花RP,还要花时间。现在有n个女孩,给出她们需要花费的钱,RP,时间。求出在保证mm最多的情况下用的时间最少。
这一题的时间是一个干扰条件。如果先不看时间,要你求出最多能搞到多少个mm,很明显的二维费用背包。现在多了个时间,但是它是不是多个费用呢?不是!
题目给我们的限制是只有一定的钱和rp,而对于时间只是说希望尽量少。所以时间并不影响我们往背包里放物品。而是在找的GF一样多的时候希望时间尽量的少。
看方程。F[i][a][b]表示前i个女孩,有a的钱和b的人品能够找到的最多的MM数量。C[i][a][b]表示前i个女孩,有a的钱和b的人品在保证找到的MM数量最多的情况下用的最少的时间。显然,C是依赖于F的。
F[i][a][b] = max{ F[i-1][a][b] , F[i-1][a-m[i]][b-r[i]] + 1 }
if( F[i-1][a][b] > F[i-1][a-m[i]][b-r[i]] + 1 )
C[i][a][b] = C[i-1][a][b];
else if( F[i-1][a][b] < F[i-1][a-m[i]][b-r[i]] + 1 )
C[i][a][b] = C[i-1][a-m[i]][b-r[i]] + time[i];
else
C[i][a][b] = min{ C[i-1][a][b],C[i-1][a-m[i]][b-r[i]] + time[i] }