zoukankan      html  css  js  c++  java
  • bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班

    Description

        一天有T(1≤T≤10^6)个时段.约翰正打算安排他的N(1≤N≤25000)只奶牛来值班,打扫
    打扫牛棚卫生.每只奶牛都有自己的空闲时间段[Si,Ei](1≤Si≤Ei≤T),只能把空闲的奶牛安排出来值班.而且,每个时间段必需有奶牛在值班.  那么,最少需要动用多少奶牛参与值班呢?如果没有办法安排出合理的方案,就输出-1.

    Input

     
        第1行:N,T.
        第2到N+1行:Si,Ei.

    Output

     
        最少安排的奶牛数.

    Sample Input


    3 10
    1 7
    3 6
    6 10

    Sample Output


    2


    样例说明
    奶牛1和奶牛3参与值班即可.


    原来想的是dp,结果发现T来T去的在T

    后来想了一下是贪心

    假设当前已经覆盖了1到l

    那么找左节点<=l的右节点最大的r,令l=max(l,a[i].r),然后继续

    wa了几次……因为以为左节点大的一定右节点大,实际上这显然不正确

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    #include<queue>
    #include<deque>
    #include<set>
    #include<map>
    #include<ctime>
    #define LL long long
    #define inf 0x7ffffff
    #define pa pair<int,int>
    using namespace std;
    pa a[25010];
    int n,m,now,ans,l;
    inline LL read()
    {
        LL x=0,f=1;char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x*f;
    }
    inline bool cmp(const pa &a,const pa &b)
    {return a.first<b.first||a.first==b.first&&a.second<b.second;}
    int main()
    {
    	n=read();m=read();
    	a[0]=make_pair(0,0);
    	for (int i=1;i<=n;i++)
    	{
    		a[i].first=read();
    		a[i].second=read();
    	}
    	sort(a+1,a+n+1,cmp);
    	while (l<m)
    	{
    		int sav=l;
    		while (now<n&&a[now+1].first<=sav+1)now++,l=max(l,a[now].second);
    		if (now==n&&a[now].second<m||a[now+1].first>l+1)
    		{
    			printf("-1");
    			return 0;
    		}
    		ans++;
    	}
    	if (l<m)
    	{
    		printf("-1");
    		return 0;
    	}
    	printf("%d
    ",ans);
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    小网络的激活函数
    Dual Path Networks
    RT600之Mailbox
    RT600之OTFAD
    RSA算法详解
    RT600之SB
    RT600之master key
    RT600之PUF
    RT600 Boot详解
    RT如何生成image
  • 原文地址:https://www.cnblogs.com/zhber/p/4035898.html
Copyright © 2011-2022 走看看