HDU 1864 最大報銷額(01揹包)

2021-07-04 07:13:47 字數 518 閱讀 7210

思路:01揹包 ,只有abc類能報銷,有別的種類也不能報銷,單類的物品不能超過600,超過也不能報銷,擴大100倍算的,直接小數有點麻煩,主要思想是tianyi cui大神寫的揹包九講,本部落格演算法精講類有,寫一下我認為最難的吧,就是用一維陣列做01揹包,揹包的容量是從大到小迴圈的,之所以這樣做就是不會產生覆蓋問題,因為大的揹包要用上乙個階段的小的揹包的資料,如果先算小容量,後面大容量使用的資料就不是上乙個階段的資料了,會導致出錯,因為可能會導致相同物品放多個進去,而用一維陣列做完全揹包,揹包的容量是從小到大迴圈的,因為每個物品可以放無數個,所以不會產生錯誤。

ac**:

#include#includeint visit[40];

int dp[3000100],cost[40];

int max(int a,int b)

int main()

} printf("%.2lf\n",dp[money] / 100.0);

} return 0;

}

hdu 1864最大報銷額 01揹包

當成0 1揹包來做的 思路,先轉化成整數,擴大100倍,首先刪除不符合條件的,然後01揹包 提交情況 memory limit exceed 1次,一開始擴大了1000倍,不過我感覺還是應該擴大1000倍。收穫 printf 0.2lf n double dp int all 100 100 中如果...

hdu 1864 最大報銷額 01揹包

此題 為01揹包,可以把最大金額當做揹包容量,然後把發票的金額當做揹包的容量和價值 則成了簡單的01揹包 我做此題,錯了n次,究其原因我是把p 60000寫成了p 100000 include include include include include using namespace std d...

01揹包 HDU 1864 最大報銷額

轉化為整數擴大100倍處理 為賦值抑制字元,表示本輸入項對應的資料 讀入後,不賦給相應的變數 如 scanf 2d 2d 3d a,b printf d n d n a,b 輸入123456789 則系統將讀取12並賦給a 讀取34但捨掉 讀取567並賦給b 所以a 12 b 567 處理好輸入後,...