//當成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揹包,揹包的容量是從大到小迴圈的,之所以這樣做就是...