P1843 奶牛晒衣服 范围不要设太大!

题意:给出了n件衣服的潮湿度,给出自然风干的速度x 给出烘干机烘干的速度

   只有一台烘干机,一次只能烘一件衣服

   问最少需要多长时间才能够烘干所有衣服

思路:二分。我们给定一个范围,在这个范围内以天数进行二分

   然后二分的时候,根据能否在这个天数内把所有衣服烘干为决定点即可

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=5e5+10;
 4 int a[maxn];
 5 int n,x,y;
 6 int check(int mid)
 7 {
 8     int sum=0;
 9     for(int i=1;i<=n;i++){
10         int tmp=a[i]-mid*x;
11         if(tmp>0){
12             sum+=tmp/y;
13             if(tmp%y) sum++;
14         }
15     }
16     if(sum>mid) return 0;
17     else return 1;
18 }
19 int main()
20 {
21     scanf("%d%d%d",&n,&x,&y);
22     for(int i=1;i<=n;i++){
23         scanf("%d",&a[i]);
24     }
25     int L=0,R=maxn;
26     int ans=maxn;
27     while(L<=R){
28         int mid=L+R>>1;
29         if(check(mid)){
30             R=mid-1;
31             ans=mid;
32         }
33         else{
34             L=mid+1;
35         }
36     }
37     printf("%d\n",ans);
38     return 0;
39 }
View Code

 

posted @ 2020-04-12 15:55  古比  阅读(150)  评论(0编辑  收藏  举报