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;
}
相关推荐
让我上个超影吧8 分钟前
【力扣76】最小覆盖子串
算法·leetcode·职场和发展
想进个大厂2 小时前
代码随想录day29 贪心03
算法·leetcode·职场和发展
橘颂TA4 小时前
【剑斩OFFER】算法的暴力美学——力扣 1020 题:飞地的数量
数据结构·c++·算法·leetcode·职场和发展·结构与算法
爱尔兰极光7 小时前
LeetCode热题100--两数之和
算法·leetcode·职场和发展
码农水水7 小时前
大疆Java面试被问:使用Async-profiler进行CPU热点分析和火焰图解读
java·开发语言·jvm·数据结构·后端·面试·职场和发展
YuTaoShao8 小时前
【LeetCode 每日一题】3650. 边反转的最小路径总成本
算法·leetcode·职场和发展
橘颂TA8 小时前
【剑斩OFFER】算法的暴力美学——力扣 1765 题:地图中的最高点
算法·leetcode·职场和发展·结构与算法
棱镜Coding8 小时前
LeetCode-Hot100 28.两数相加
算法·leetcode·职场和发展
iAkuya9 小时前
(leetcode)力扣100 53课程表(深搜+拓扑排序)
算法·leetcode·职场和发展