poj 3190 奶牛挤奶问题 贪心算法

该博客探讨了如何使用贪心算法解决POJ 3190问题,即确定最少需要多少台挤奶机以确保奶牛在不被打扰的情况下挤奶。博主首先对奶牛的挤奶时间进行排序,然后利用优先队列来管理正在工作中的奶牛。当新奶牛的开始时间大于队列中奶牛的结束时间时,无需额外机器;否则,需要增加机器。博客还强调了保存奶牛ID以便于后续操作的重要性,并提示在排序时如何处理相同开始时间的情况。
摘要由CSDN通过智能技术生成

题意:奶牛挤奶问题,每只奶牛在[a,b]的时间内挤奶,要求挤奶的过程中不能不打扰,且只能自己一个人独享挤奶的机器。问最少需要多少个挤奶的机器?

思路:

  1. 对奶牛挤奶开始的时间从小到大开始排序。
  2. 将正在工作的奶牛放在"队列"中,这里采用的是"优先队列"
  3. 如果后面的一个奶牛的开始时间大于在队列中工作的结束时间,则不需要加机器,只需要将正在工作的奶牛pop出去,然后放入新的奶牛  否则要加机器

代码中对思路3的实现

pq.push(cow[0]);
    for (int i = 1; i < n; i++)
    {
        Cow t = pq.top();
        if (cow[i].b > t.e)
        {
            pq.pop();
            num[cow[i].id] = num[t.id];
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值