日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

木材加工 解题报告

發布時間:2023/12/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 木材加工 解题报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

木材加工 解題報告

Description\rm DescriptionDescription

描述

木材廠有一些原木,現在想把這些木頭切割成一些長度相同的小段木頭(木頭有可能有剩余),需要得到的小段的數目是給定的。當然,我們希望得到的小段木頭越長越好,你的任務是計算能夠得到的小段木頭的最大長度。木頭長度的單位是cmcmcm。原木的長度都是正整數,我們要求切割得到的小段木頭的長度也是正整數。

例如有兩根原木長度分別為111111212121,要求切割成到等長的666段,很明顯能切割出來的小段木頭長度最長為555.

輸入

第一行是兩個正整數NNNKKK(1≤N≤100000,1≤K≤100000000)(1 ≤ N ≤ 100000,1 ≤ K ≤ 100000000)(1N1000001K100000000)NNN是原木的數目,KKK是需要得到的小段的數目。

接下來的NNN行,每行有一個111100000000100000000100000000之間的正整數,表示一根原木的長度。

輸出

能夠切割得到的小段的最大長度。如果連1cm1cm1cm長的小段都切不出來,輸出“0”“0”0。

輸入樣例

3 7
232
124
456

輸出樣例

114

解題部分

思路

二分切割的長度,用這個長度去切木頭,看看可以切多少段,當段數小于數目時,就說明切的長度太長,需要縮小,則把 r\rm rr 賦值為mid\rm midmid,同理,當段數大于數目時,就說明切的長度太短,需要放大,則把 l\rm ll 賦值為mid\rm midmid。

int l=0,r=100000;//細節,如果這里l設為1,那么當切不了的時候,就會輸出1。所以要用0。 while(l+1 < r) {ans=0;//細節:計數器要歸零。int mid=(l+r)/2;for(int i=1; i<=n; i++)ans+=a[i]/mid;//累加能切的段數if (ans>=k)l=mid;else if (ans<k)r=mid; }

提交代碼地址
提交代碼地址(有改動)
注:在做第二道題時,可以把繩子擴大100倍再進行二分答案。記得看好許局類型,什么時候用double,什么時候用int。

總結

以上是生活随笔為你收集整理的木材加工 解题报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。