zoukankan      html  css  js  c++  java
  • poj2376

    一、题意:有n头牛,它们都有一个工作时间的区间s至e,给定一个总的工作时间t,问最少需要多少头牛才能覆盖从1到t的工作时间

    二、思路:简单的区间贪心。首先将牛的工作时间按起始时间最小(第一优先级)、结束时间最大的顺序(第二优先级)进行排序,然后取第n头牛时,要满足一下条件:1、第n头牛的s要小于等于第n-1头牛的e+1(这里要注意题目里给的是时间点,不是区间段)  2、第n头牛的e尽可能的大。之后就得考虑一些特例情况就可以了。

    三、代码:

    #include"iostream"
    #include"stdio.h"
    #include"algorithm"
    using namespace std;
    
    const int MAXN=25005;
    int n,t;
    
    struct node
    {
        int s,e;
    };
    node cows[MAXN];
    
    bool Cmp(const node a,const node b)
    {
        if(a.s!=b.s) return a.s<b.s;
        else return a.e>=b.e;
    }
    
    int Cal(int ans)
    {
        if(n<1||cows[0].s!=1) return -1;
        if(n==1)
        {
            if(cows[0].s==1&&cows[0].e==t) return 1;
            else return -1;
        }
        int i=1,maxE=cows[0].e,maxNextE=cows[0].e;
        while(i<n)
        {
            if(maxE==t) return ans;
            bool flag=false;
            if(cows[i].s<=maxE+1){
                while(i<n&&cows[i].s<=maxE+1)
                {
                    if(cows[i].e>maxNextE)
                    {
                        maxNextE=cows[i].e;
                        flag=true;
                    }
                    i++;
                }
                if(flag)
                {
                    maxE=maxNextE;
                    ans++;
                }
            }
            else
                return -1;
        }
        if(maxE==t) return ans;
        else return -1;
    }
    
    int main()
    {
        while(scanf("%d%d",&n,&t)==2)
        {
            for(int i=0;i<n;i++)
                scanf("%d%d",&cows[i].s,&cows[i].e);
            sort(cows,cows+n,Cmp);
            cout<<Cal(1)<<endl;
        }
    
        return 0;
    }
    

      

  • 相关阅读:
    angular----关于注入HTML
    js ---- 时间格式
    JQuery的父、子、兄弟节点查找方法
    js中的时间与毫秒数互相转换
    $.each ---- 跳出当前的循环
    关于ng-model取不到值的问题
    IOS 物理引擎
    斯坦福 IOS讲义 课件总结 三
    斯坦福 IOS讲义 课件总结 二
    斯坦福 IOS讲义 课件总结 一
  • 原文地址:https://www.cnblogs.com/acm-jing/p/9630588.html
Copyright © 2011-2022 走看看