CSUACM 1976 搬運工小明(二分)

2021-08-21 17:39:14 字數 1081 閱讀 4871

作為老人的小明非常憂傷,因為他馬上要被流放到本部去了,住進全左家壠最有歷史感的11舍真是一件非常榮幸的事情。

搬行李是個體力活,小明發現自己的行李太多啦,所以他決定去買很多個袋子來裝走。到了超市的小明發現,不同大小的袋子居然**一樣???雖然買最大的自然最賺,但是小明是名遠近聞名的環保人士,他覺得袋子只要能裝下他的行李就夠了,並且為了不麻煩收銀的小姐姐(⊙o⊙)…,他也只會購買同一種大小的袋子。因此他希望在能裝下所有行李的前提下,袋子越小越好。同時為了避免弄亂行李,小明希望同乙個袋子裝的是位置連續相鄰的行李。

小明摸了摸口袋發現自己帶的錢最多能買n個袋子,數學特別差的他不知道到底該買多大的才合適,所以想靠你來解決這個問題了。

第一行為乙個數字t(t<=10)表示資料組數

第二行為兩個數字n(n <= 10^5)和 m(m <= 10^5)表示袋子個數和小明的行李個數

第三行為m個數字,第i個數字a[i]表示小明的第i個行李體積為a[i](0輸出一行表示袋子的最小體積(整數)

1

3 31 1 1

袋子不能裝**積大於其容積的物品

多個物品滿足體積之和小於等於乙個袋子的容積,就能被裝進

這道題和修路的那道題異曲同工,首先設定上下限,下限是最大的物體體積,意味著至少乙個袋子能裝乙個物品,上限是所有物品的體積和,意味著用乙個袋子就可以將所有物品裝完,然後採用二分法尋找答案。

#include using namespace std;

int main()

while(leftmid)

else

vol=vol+a[i];

}if(bag<0)//袋子用完了,東西還沒裝完,說明mid太小

left=mid+1;

else//還有可以縮小的空間

right=mid;

} cout<} return 0;

}

CSUOJ 1976 搬運工小明 二分

1976 搬運工小明 submit page summary time limit 2 sec memory limit 128 mb submitted 3 solved 2 description 作為老人的小明非常憂傷,因為他馬上要被流放到本部去了,住進全左家壠最有歷史感的11舍真是一件非常榮...

午夜搬運工

做乙個作業,夜深人靜的時候搬運資料。如下 use mydb godeclare i int declare j int declare m int declare offset int select m isnull max id 0 from sourcedb dbo.table set offs...

知識的搬運工

jquery ajax呼叫遠端介面的跨域問題 ajax crossdomain true,就是上面的兩行 success function data error function data 不知到為什麼,但就是這麼使用的 2.雙波浪號 可以將物件轉化成小數,並且取整 只要整數部分,非四捨五入的那種 ...