【贪心】Ybt_奶牛晒衣服

题目

有n件衣服,其中每一件衣服的初始湿度为 h[i] 。
每秒钟衣服会自然风干a个湿度,你也可以选择一件衣服吹干使它这个回合降低b个湿度。
当衣服湿度等于0时这件衣服就干了。
问最少需要多长时间。


贪心,肯定选择吹干最湿的那件衣服。
然后考虑怎么判断所有衣服经自然风干后是否为干的:
统计经过时间内所有衣服的风干度,再拿最湿的与其相比即可。


代码

#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
priority_queue <int> q;  //大根堆
int n, a, b, s, t, ans;
int main(){
    
    
	scanf("%d%d%d",&n,&a,&b);
	for(int i = 1; i <= n; ++i){
    
    
		scanf("%d",&s);
		q.push(s);  //放入堆中
	}
	while(q.top() > t){
    
      //当最湿的衣服大于(时间*自然风干降低的湿度)时,吹他
		++ans;  //加秒数
		int l = q.top(); 
		q.pop();
		t = t+a;  //所有衣服自然风干t
		q.push(l-b);  //吹
	}
	printf("%d",ans);  //输出答案
} 

猜你喜欢

转载自blog.csdn.net/qq_42937087/article/details/111760485