A28 贪心算法 P1843 奶牛晒衣服

视频链接:A28 贪心算法 P1843 奶牛晒衣服_哔哩哔哩_bilibili

 

 

Luogu P1843 奶牛晒衣服

#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;

priority_queue<int> q; //大根堆
int n,a,b;
int tim,mx;

int main(){
  scanf("%d%d%d",&n,&a,&b);
  for(int i=1;i<=n;i++){
    int x; scanf("%d",&x);
    q.push(x);
  }
  
  //每次找出剩余的湿度最大的衣服,使用烘干机
  mx=q.top(); q.pop();
  while(mx>tim*a){
    tim++;
    mx-=b; 
    q.push(mx);
    mx=q.top(); q.pop();
  }
  printf("%d",tim);
}

 

// 二分答案 nlogn
#include<iostream>
using namespace std;

int n,a,b,w[500005];

bool check(int t){
  int s=0;
  for(int i=1;i<=n;i++){
    if(w[i]<=t*a) continue;
    s+=(w[i]-t*a+b-1)/b; //上取整
  }
  return s<=t;
}
int main(){
  ios::sync_with_stdio(0);
  cin>>n>>a>>b;
  for(int i=1;i<=n;i++) cin>>w[i];
  
  int l=0,r=1e6,mid;
  while(l+1<r){
    mid=l+r>>1;
    check(mid)?r=mid:l=mid;
  }
  cout<<r<<endl;
}

 

posted @ 2023-09-02 11:09  董晓  阅读(471)  评论(0)    收藏  举报