1. 程式人生 > >CodeForces 1107F. Vasya and Endless Credits

CodeForces 1107F. Vasya and Endless Credits

最大 之間 算法 sub 方式 最小費用最大流 code 連線 需要

題目簡述:給定 $n \leq 500$ 個貸款方式,其中第$i$個貸款額為$a_i$元,需要$k_i$個月償還,每月還貸$b_i$元。在每個月月初可申請其中一個貸款,而在每個月月底時需要還貸。求:(在某一時刻)可獲得的最多貸款。

觀察1:獲得最多貸款的時刻一定在$n$月以內。

觀察2:倒數第$j$個月申請的第$i$個貸款,在獲得最多貸款的時刻之前,需要還貸$b_i*\min\{k_i,j-1\}$元。

解1:(二分圖最佳匹配,最小費用最大流)code

設$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:

CodeForces 1107F. Vasya and Endless Credits