记录编号 |
566928 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺十二]奶牛晒衣服 |
最终得分 |
100 |
用户昵称 |
冷月星云 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.583 s |
提交时间 |
2021-11-18 16:44:51 |
内存使用 |
4.58 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,A,B;
int wet[500010];
/*
*计算在预设的天数下自然能否晾干
*无法晾干的计算需要使用烘衣机的天数
*若烘衣机天数小于预设天数则减小预设天数,否则增大预设天数
*/
int check(int ans){
int days = 0;
for(int i = 1;i<=n;i++){
if(wet[i]>ans*A){
days += ceil( (wet[i] - ans * A) *1.0 / B); //需要小数否则会舍弃小数位
}
}
if(days>ans){
return 0;
}
else{
return 1;
}
}
int main(){
freopen("dry.in","r",stdin);
freopen("dry.out","w",stdout);
cin>>n>>A>>B;
for(int i = 1;i<=n;i++){
cin>>wet[i];
}
/**
*排序求出二分初始值
*/
sort(wet + 1,wet + n + 1);
/**
*二分找到需要晒干的天数
*时间复杂度O(NlogN)
*/
int l = 1;
int r = wet[n];
int mid,res = 0;
while(l<=r){
mid = (l + r) / 2;
if(check(mid)==1){
r = mid - 1;
res = mid;
}
else{
l = mid + 1;
}
}
cout<<res;
return 0;
}