记录编号 566928 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十二]奶牛晒衣服 最终得分 100
用户昵称 Gravatar冷月星云 是否通过 通过
代码语言 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;
}