Id | 1021 |
Title | Great Equipment |
Tags | dp |
Brief solution | 先不考虑合成一套的情况。用dp[i][x][y]表示考虑前i个大篷车,第一类武器为x个,第二类武器为y个的情况下,得到的最大利益。枚举第i个大篷装的第一类和第二类武器的数量,这样第三类武器数量一定是在剩余重量和大小限制下的最大值,根据dp[i-1][*][*]就可以更新dp[i]了。在更新过程中,使用滚动数组节省空间,另一方面每次不用初始化滚动数组中的目标数组,还注意了一下dp[i-1]中两个维度的最大值,用来优化dp过程,使得理论复杂度的dp过程实际复杂度不会大到哪里去。在完成dp后,枚举成套的数量,计算出利益再加上不成套的利益,从中找出最大值。 |