蓝桥杯备考:奶牛晒衣服

这道题第一眼想用贪心做,1 2 3 我们可以让最多的3用烘干机1秒就能完成,那么是不是我们每次都给湿度最大的衣服用烘干机呢?我们试试哈,比如5,8,每秒晒干1我们给8衣服一直用烘干机是需要4秒的,4秒后8这个衣服干了,我们还要多花1秒给5这个衣服,一共是5秒,举个反例,如果我们先给8用三次烘干机,8还剩2,5还剩2,我们再给5用一次烘干机,只需要4秒,因为啥呢,因为我们如果一直给最大的用烘干机,烘干完之后其他的还没烘干,这时候时间就出现空余了

再说个极端的例子,18,16 ,烘干机+2,普通+1,这时候 如果我们烘干机全给18的话,6秒解决18,还剩10,这时候烘干机在全给10,4秒,一共10秒

如果我们先给18五次烘干机会,就变成 3,11了,这时候我们再给11三次,变成0,2了,再来1秒就行了,一共是5+3+1 9秒,so我们不能用贪心做这道题

我们可以用二分答案,来枚举所有答案,最短时间的话,在一个时间能完成,后面的时间就都能完成了,所以它是有一个二段性的

由此,我们已经可以做出本题来了,枚举范围就从1到5e5就行了

cpp 复制代码
#include <iostream>
using namespace std;
const int N = 5e5+10;
typedef long long ll;
ll n,a,b;ll w[N];
bool check(ll x)
{
	ll cnt  = 0;
	for(int i = 1;i<=n;i++)
	{
		if(w[i] <= a*x) continue;
		ll t = w[i]-a*x;
		cnt += (t/b+(t%b ? 1 : 0));
	}
	return cnt<=x ? true : false;
	
}

int main()
{
	cin >> n >> a >> b;
	for(int i = 1;i<=n;i++)
	{
		cin >> w[i];
	 } 
	ll l = 1,r= 5e5;
	while(l<r)
	{
		ll mid = (l+r)/2;
		if(check(mid)) r= mid;
		else l = mid+1;
	 } 
	 cout << l << endl;
	
	
	
	
	
	
	
	
	return 0;
 }            
相关推荐
yuanxi20035 分钟前
上药集团药品销售公司签署沪明医疗数链协议:PSS⁵视角下的跨区域数据合作机会
职场和发展·创业创新·学习方法
顶点多余1 天前
9.16 面试总结
linux·面试·职场和发展
yuanxi2002 天前
圣湘生物的三重转变:用PSS⁵价值力看懂从卖单品到卖经营价值
职场和发展·创业创新·学习方法
weixin_435208162 天前
【大模型面试宝典】开源啦!!!
人工智能·职场和发展·agent·deepseek
jianqiang.xue2 天前
如何做好IT类的技术面试?
面试·职场和发展
y1su2 天前
【Leetcode】1477. 找两个和为目标值且不重叠的子数组
数据结构·后端·算法·leetcode·职场和发展
hqyjzsb3 天前
规划工商管理大学成长:搭建四层能力体系,重视高阶的 AI 能力建设
开发语言·人工智能·python·microsoft·职场和发展·数据挖掘·业界资讯
小刘在重生~3 天前
十六(3)、《集合扩充》CopyOnWriteArrayList 超详细解析(线程安全集合)
java·笔记·面试·职场和发展
June bug4 天前
【HCIA- AI(正课)】3.1.人工智能业务流程
职场和发展
颜挺锐4 天前
如何轻松通过性能测试面试之第十一篇:如何判断应用的最大处理能力
面试·职场和发展