codevs1464 裝箱問題2

2021-07-09 08:04:41 字數 1156 閱讀 8301

題目描述 description

乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1*1, 2*2, 3*3, 4*4, 5*5, 6*6。這些產品通常使用乙個 6*6*h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的包裹數量。他們很需要有乙個好的程式幫他們解決這個問題從而節省費用。現在這個程式由你來設計。 

輸入描述 input description

輸入檔案包括幾行,每一行代表乙個訂單。每個訂單裡的一行包括六個整數,中間用空格隔開,分別為1*1至6*6這六種產品的數量。輸入檔案將以6個0組成的一行結尾。

輸出描述 output description

除了輸入的最後一行6個0以外,輸入檔案裡每一行對應著輸出檔案的一行,每一行輸出乙個整數代表對應的訂單所需的最小包裹數。

樣例輸入 sample input

0 0 4 0 0 1

7 5 1 0 0 0

0 0 0 0 0 0

樣例輸出 sample output 2

1

資料範圍及提示 data size & hint

資料範圍很小,模擬即可

【題解】

模擬+貪心。認真理解對貪心策略的選擇很有幫助

【**】

#include#include#includeusing namespace std;

int a[10];

int ans,k;

int main()

//用1和2混合來填,如果無法填滿無法用其它的填

//填3,先4個一組填,然後可以用1,2來填

ans+=a[3]/4; a[3]%=4;

if (a[3]==1)

if (a[3]==2)

if (a[3]==3)

//填2

k=a[2]/9; ans+=k; a[2]%=9;//先把整的都填了

if(a[2])

//填1

k=a[1]/36; ans+=k; a[1]%=36;//先把整的都填了

if (a[1]) ans++;//如果還剩下,就只能再填到乙個裡面了

printf("%d\n",ans);

}}

codevs 1464 裝箱問題 2

題目描述 description 乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1 1,2 2,3 3,4 4,5 5,6 6。這些產品通常使用乙個 6 6 h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的...

codevs 1464 裝箱問題 2 x

題目描述 description 乙個工廠製造的產品形狀都是長方體,它們的高度都是h,長和寬都相等,一共有六個型號,他們的長寬分別為1 1,2 2,3 3,4 4,5 5,6 6。這些產品通常使用乙個 6 6 h 的長方體包裹包裝然後郵寄給客戶。因為郵費很貴,所以工廠要想方設法的減小每個訂單運送時的...

WIKIOI 1464 裝箱問題2

這題目其實很簡單 把第i個格仔抽象成乙個i i體積的箱子,那麼這行資料的體積總和為 a i i i 1 i 6 然後用這個總體積去除以6 6,即看能放多少個6 6體積的箱子 這個時候要注意!如果能除盡則證明正好分配完整,否則則需要額外再加1個箱子,這裡只要把tot強制轉換成float型再除再比較即可...