【每日一题】华华给月月准备礼物

华华给月月准备礼物

https://ac.nowcoder.com/acm/problem/23049

Solution

为长度取时,能得到的木棍数。
因为长度为的木棍最多能分成根长度为的木棍,
所以
显然这个函数是单调下降的,所以可以二分找到最大的满足

Code

#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
  cin.sync_with_stdio(false), cin.tie(nullptr);

  int n, k;
  cin >> n >> k;
  vector<int> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int low = 0, high = 1000000000;
  while (low < high) {
    int mid = (low + high + 1) / 2;
    ll sum = 0;
    for (int i = 0; i < n; i++) {
      sum += a[i] / mid;
    }
    if (sum >= k) {
      low = mid;
    } else {
      high = mid - 1;
    }
  }
  cout << low << "\n";
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务