TAG
- 芝士水题、算法 − 【二分】 芝士水题、算法 - 【二分】 芝士水题、算法−【二分】时间复杂度
- O ( N ∗ log N ) O(N \ast \log N) O(N∗logN)
//
#include <bits/stdc++.h>
using namespace std;
// #define int long long
const int N = 1e5 + 6;
vector<pair<int, int> > v;
int n, m;
bool f(int mid) {
int cnt = 0;
for (auto [x, y] : v) {
cnt += (x / mid) * (y / mid);
}
return cnt >= m;
}
void solve() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i++) {
int x, y;
scanf("%d%d", &x, &y);
v.push_back(make_pair(x, y));
}
int x = 0, y = N;
while (x < y) {
int mid = (x + y + 1) >> 1;
if (f(mid)) x = mid;
else y = mid - 1;
}
printf("%d\n", x);
}
signed main() {
int t = 1;
// scanf("%d", &t);
while (t--) solve();
return 0;
}
实现细节
- `
参考示意图
-
`
参考链接
- `
作者 | 乐意奥AI