P1843 奶牛晒衣服(二分)

思路:就是一个模板,只是找最小化而已。在判断函数里面:当湿度<=x*A不判断, 反之sum+=(a[i]-x*A)/B+(a[i]-x*A)%B?1:0;

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn = 5e5 + ;
int a[maxn], n, A, B, maxx, ans, mid; bool check(int x){
int sum = ;
for (int i = ; i <= n;++i)
if (a[i] > x*A){
sum += (a[i] - x*A) / B;
if ((a[i] - x*A) % B)sum++;
// cout << i << " a=" << a[i] << " a-x*A=" << a[i] - x*A << endl;
}
// cout << "sum=" << sum << endl;
return sum <= x;
} void half(){
int l = , r = maxx;
while (l <= r){
mid = (l + r) >> ;
// cout << "l=" << l << " mid=" << mid << " r=" << r << endl;
if (check(mid)){ ans = mid; r = mid - ; }
else l = mid + ;
}
} int main(){
cin >> n >> A >> B;
for (int i = ; i <= n; ++i)
cin >> a[i], maxx = max(maxx, a[i]);
half(); //二分
cout << ans << endl;
}
上一篇:几个SQL命令的使用


下一篇:RHCS配置web高可用集群