本文共 591 字,大约阅读时间需要 1 分钟。
有n件衣服,其中每一件衣服的初始湿度为 h[i] 。
每秒钟衣服会自然风干a个湿度,你也可以选择一件衣服吹干使它这个回合降低b个湿度。 当衣服湿度等于0时这件衣服就干了。 问最少需要多长时间。贪心,肯定选择吹干最湿的那件衣服。
然后考虑怎么判断所有衣服经自然风干后是否为干的: 统计经过时间内所有衣服的风干度,再拿最湿的与其相比即可。#include#include #include using namespace std;priority_queue 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); //输出答案}
转载地址:http://sgkg.baihongyu.com/