h的蓝桥杯每日一题

2.烤肠试吃【算法赛】 - 蓝桥云课

这个题主要是考察的二分+贪心结合去找最小值最大化的问题

在这个题当中我们可以看到需使用优先队列(最小堆)来管理烤架可用时间(快速找到最早可用烤架)

cpp 复制代码
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
const int N=100010;
ll n,k,d;
ll a[N];
bool can(ll t)
{
	priority_queue<ll,vector<ll>,greater<ll>> pq;
	for(int i=0;i<k;i++)pq.push(0);
	for(int i=0;i<n;i++)
	{
		ll avail=pq.top();//空闲烤架的时间 
		pq.pop();
		ll start=max(avail,a[i]);//得到目前能用烤架的最小时间 
		ll finish=start+d;//得到考场的时间 
		if(finish>t)return false;
		pq.push(finish);
	}
	return true;
}

int main()
{
	cin>>n>>k>>d;
	for(int i=0;i<n;i++)cin>>a[i];
	sort(a,a+n);
	ll l=a[0]+d;
	ll r=a[n-1]+n*d;
	while(l<r)
	{
		ll mid=l+(r-l)/2;
		if(can(mid))
		{
			r=mid;
		}
		else l=mid+1;
	}
	cout<<l<<endl;
	return 0;
}
相关推荐
源代码•宸2 小时前
Leetcode—166. 加一【简单】new(big.Int)法
经验分享·算法·leetcode·职场和发展·golang·new.bigint
❀͜͡傀儡师2 小时前
10个高并发场景的技术面试问题
面试·职场和发展
YuTaoShao2 小时前
【LeetCode 每日一题】1339. 分裂二叉树的最大乘积
算法·leetcode·职场和发展
leoufung2 小时前
LeetCode 172. Factorial Trailing Zeroes 题解
算法·leetcode·职场和发展
天才测试猿3 小时前
软件测试之bug分析定位技巧
软件测试·python·selenium·测试工具·职场和发展·测试用例·bug
程序员良辰4 小时前
【面试读心术】OJ系统面试深度解析 - 从“一问三不知“到“对答如流“的蜕变
android·面试·职场和发展
程序员小远4 小时前
接口自动化测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
CCPC不拿奖不改名4 小时前
Python基础:python语言中的文件操作+面试题目
开发语言·数据结构·人工智能·python·学习·面试·职场和发展
橘颂TA4 小时前
【剑斩OFFER】算法的暴力美学——力扣 43 题:字符串相乘
数据结构·算法·leetcode·职场和发展·哈希算法·结构与算法
小芒果_014 小时前
P8662 [蓝桥杯 2018 省 AB] 全球变暖
c++·算法·蓝桥杯·信息学奥赛