Eddie爸爸要在老家盖一幢纯木材打造的别墅,高薪聘请了一个聪明的木匠。现在有n根木棍,每根木棍的长度已知且均为正整数。木棍可以以任意正整数长度切割,但不可以连接。现在要从这些木棍中切割出m条长度相同的小木段,求小木段的最大长度是多少。
比如有十根长度分别1,2,3,4,5,6,7,8,9,10的木棍,要切割得到24条小木段。如果小木段长度为3,则最多能切割出15条小木段(15=10/3+9/3+8/3+7/3+6/3+5/3+4/3+3/3);如果小木段长度为2,则最多能切割出25条小木段,满足要求,故答案为2。
#include <iostream> using namespace std; int n, m, i,lbound, ubound, mid, count; int len[1000000]; // 木棍长度 int main() { cin >> n; count = 0; for (i = 0; i < n; i++) { cin >> len[i]; ____(1)_____; } cin >> m; if(____(2)______) { cout << "Fired" <<endl; return 0; } lbound = 1; ubound = 1000000; while (______(3)__________) { mid = ______(4)__________; count = 0; for (i = 0; i < n; i++) _____(5)________; if (count < m) ubound = mid - 1; else lbound = mid; } cout << lbound << endl; return 0; }