zoukankan      html  css  js  c++  java
  • POJ 3190 Stall Reservations【贪心】

    POJ 3190

    题意:

    一些奶牛要在指定的时间内挤牛奶,而一个机器只能同时对一个奶牛工作。给你每头奶牛的指定时间的区间(闭区间),问你最小需要多少机器。
    思路:
    先按奶牛要求的时间起始点进行从小到大排序,然后维护一个优先队列,里面以已经开始挤奶的奶牛的结束时间早为优先。然后每次只需要检查当前是否有奶牛的挤奶工作已经完成的机器即可,若有,则换那台机器进行工作。若没有,则加一台新的机器。
    注意:利用priority_queue<Node,vector<Node>,less<Node>>qe;这个定义后可以将元素从大到小插入元素,但是注意的是结构体中必须重载<操作符,不然会出错,如果不是结构体而是int类型则不用重载

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    const int maxn=60000;
    int n,use[maxn];
    struct Node
    {
        int l;
        int r;
        int pos;//原顺序输出
        //注优先队列的重载<与sort的重载<结论相反,优先级大的先输出
        bool operator <(const Node &a)const
        {
            if(r==a.r)
                return l>a.l;
            return r>a.r;
        }
    }a[maxn];
    priority_queue<Node> q;
    bool cmp(Node a,Node b)
    {
        if(a.l==b.l)
            return a.r<b.r;
        return a.l<b.l;
    }
    int main()
    {
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=0;i<n;i++)
            {
                scanf("%d%d",&a[i].l,&a[i].r);
                a[i].pos=i;
            }
            sort(a,a+n,cmp);
            q.push(a[0]);
            int ans=1;
            use[a[0].pos]=1;
            for(int i=1;i<n;i++)
            {
                if(!q.empty()&&q.top().r<a[i].l)
                {
                    use[a[i].pos]=use[q.top().pos];
                    q.pop();
                }
                else
                {
                    ans++;
                    use[a[i].pos]=ans;
                }
                q.push(a[i]);
            }
            printf("%d
    ",ans);
            for(int i=0;i<n;i++)  
                printf("%d
    ",use[i]);  
            while(!q.empty())  
                q.pop();  
        }  
        return 0;  
    }
  • 相关阅读:
    进化中的技术小白
    mybatis的学习5______使用注解实现CURD
    mybatis的学习4______分页的实现
    Mybatis的学习3______使用log4j打印日志信息
    mybatis的学习2_____配置文件的详解和代码的优化
    Java代码实现邮件的上传
    JavaWeb小作业 用户表单数据的获取
    Java的学习JSP____4
    Javaweb的学习session___3
    Javaweb的学习(servlet和request)___2
  • 原文地址:https://www.cnblogs.com/demian/p/6560860.html
Copyright © 2011-2022 走看看