社区讨论
二分答案模板题两个点没过
P8647 [蓝桥杯 2017 省 AB] 分巧克力参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo2y124m
- 此快照首次捕获于
- 2023/10/23 21:38 2 年前
- 此快照最后确认于
- 2023/10/23 21:38 2 年前
CPP
#include <iostream>
using namespace std;
int total;
int res;
int demand;
const int N = (int)1e5 + 100;
struct node {
long long len;
long long b;
}nodes[N];
inline bool check(int x) {
int count = 0;
long long whole = 0;
for (int i = 0; i < total; i++) {
if (x > nodes[i].len || x > nodes[i].b) {
continue;
}
else {
whole = nodes[i].len * nodes[i].b;
long long need = (long)x * (long)x;
int see = 0;
see= whole / need;
count += see;
}
}
bool shit=count >= demand;
return shit;
}
int main() {
cin >> total >> demand;
int right = 0;
for (int i = 0; i < total; i++){
int bind_1, bind_2;
cin >> bind_1 >> bind_2;
right = max(right, bind_1);
right = max(right, bind_2);
nodes[i].len = bind_1;
nodes[i].b = bind_2;
}
int left = 1;
while (left <= right) {
int mid = right + left >> 1;
if (check(mid)) {
res = mid;
left = mid + 1;
}
else {
right = mid - 1;
}
}
cout << res << endl;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...