奶牛晒衣服
题目
有 n n n件衣服,第 i i i 件衣服的湿度为 h i h_i hi
在自然条件下,每件衣服每分钟都可以自然晒干 A A A点湿度
在烘干机作用下,可以选择一件衣服,用一分钟的时间晒干 B B B点湿度
求出晒干所有衣服的最少时间(湿度为 0 0 0 为干)
输入
第一行三个正整数 N , A , B N,A, B N,A,B
接下来 N N N行,第 i i i 行一个正整数,表示第 i i i 件衣服的湿度 h i h_i hi
输出
输出一个数,表示晒干所有衣服的最少时间
输入样例
3 2 1
1
2
3
输出样例
1
解题思路
我们知道最后一件肯定是湿度最大的衣服
那么我们就设当前为第
T
T
T分钟,若
h
i
h_i
hi
−
-
−
t
t
t
∗
*
∗
A
A
A
<
=
<=
<=
0
0
0
那就得知第
i
i
i件衣服被晒干
但是这样是
O
(
n
2
)
O(n^2)
O(n2)那我们用一个大根堆来维护即可
程序如下
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
int n, a, b, h[1000001];
priority_queue<int>q;
int main()
{
scanf("%d%d%d",&n,&a,&b);
for(int i = 1; i <= n; ++i)
{
scanf("%d",&h[i]);
q.push(h[i]);
}
int t = 0;
while(q.top() - t * a > 0)
{
t++;
int x = q.top();
q.pop();
q.push(x - b);
}
printf("%d\n",t);
return 0;
}