社区讨论
75pts 求hack
P14635[NOIP2025] 糖果店参与者 2已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mikg9y3c
- 此快照首次捕获于
- 2025/11/29 23:32 3 个月前
- 此快照最后确认于
- 2025/12/01 21:25 3 个月前
思路二分重复选择糖果的重复数量
CPP#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
array<int, 2> a[100009];
int d[100009];
int minn = 0x7f7f7f7f7f7f7f7f;
inline int check(int x) {
int i = upper_bound(d, d + n + 1, m - x * minn) - d - 1;
return x * 2 + i;
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= n ;i++){
cin >> a[i][0] >> a[i][1];
if(a[i][0] + a[i][1] < minn) minn = a[i][0] + a[i][1];
}
sort(a + 1, a + n + 1);
for(int i = 1; i <= n ;i++) {
d[i] = d[i - 1] + a[i][0];
// cout << d[i] << " ";
}
// cout << "\n";
int l = 0, r = m / minn, maxn = check(r);
while(l < r) {
int mid = l + r >> 1;
if(check(mid) >= maxn) {
r = mid;
maxn = check(mid);
} else {
l = mid + 1;
}
}
// cout << l << " " << minn << "\n";
// cout << m - l * minn << " " << i << "\n";
cout << maxn << "\n";
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...