CodeForces 1107F. Vasya and Endless Credits

题目简述:给定 $n \leq 500$ 个贷款方式,其中第$i$个贷款额为$a_i$元,需要$k_i$个月偿还,每月还贷$b_i$元。在每个月月初可申请其中一个贷款,而在每个月月底时需要还贷。求:(在某一时刻)可获得的最多贷款。

观察1:获得最多贷款的时刻一定在$n$月以内。

观察2:倒数第$j$个月申请的第$i$个贷款,在获得最多贷款的时刻之前,需要还贷$b_i*\min\{k_i,j-1\}$元。

解1:(二分图最佳匹配,最小费用最大流)

设$X$部有$n$个点,记为$X_i$,表示第$i$个贷款方式;$Y$部有$n$个点,记为$Y_j$。$X_i$和$Y_j$之间的连线表示倒数第$j$个月申请第$i$个贷款。

连边$(X_i, Y_j)$,权值为$\max\{a_i-b_i\min\{k_i,j-1\},0\}$。二分图最佳匹配即为答案。使用KM算法求二分图最佳匹配,时间复杂度为$O(n^3)$。

解2:

猜你喜欢

转载自www.cnblogs.com/TinyWong/p/10343282.html