hdu 1864最大報銷額 01揹包

2021-06-06 23:00:15 字數 902 閱讀 4354

//當成0-1揹包來做的

//思路,先轉化成整數,擴大100倍,首先刪除不符合條件的,然後01揹包

//提交情況:memory limit exceed 1次,一開始擴大了1000倍,不過我感覺還是應該擴大1000倍。

//收穫:printf("%0.2lf\n",(double)dp[(int)(all*100)]/100)中如果不強制轉化為double的話,前面的保留兩位小數的格式不起作用

//ac code

//6038113 2012-06-05 16:33:34 accepted 1864 703ms 12268k 1244 b g++ chen

#include#include#includeusing namespace std;

int bill[35];

int kind[3];

int n,n;

int dp[3000000];

double all;

string str;

int main()

else

}//end while

//判斷每張發票的每一項

double sum=0;

if(bill[i]!=-1)

sum+=kind[j];

}if(bill[i]!=-1)

else

}}//end if

}//end for

//預處理完畢,開始進行揹包

memset(dp,0,sizeof(dp));

for(int i=0;i=bill[i];v--)

} printf("%0.2lf\n",(double)dp[(int)(all*100)]/100);

} return 0;

}

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 處理好輸入後,...

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

思路 01揹包 只有abc類能報銷,有別的種類也不能報銷,單類的物品不能超過600,超過也不能報銷,擴大100倍算的,直接小數有點麻煩,主要思想是tianyi cui大神寫的揹包九講,本部落格演算法精講類有,寫一下我認為最難的吧,就是用一維陣列做01揹包,揹包的容量是從大到小迴圈的,之所以這樣做就是...