博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3389 [Usaco2004 Dec]Cleaning Shifts安排值班
阅读量:5052 次
发布时间:2019-06-12

本文共 1052 字,大约阅读时间需要 3 分钟。

 

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
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long#define inf 0x7ffffff#define pa pair
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
l+1) { printf("-1"); return 0; } ans++; } if (l

  

转载于:https://www.cnblogs.com/zhber/p/4035898.html

你可能感兴趣的文章
JavaScript入门经典红皮书阅读笔记6.13(第二篇)
查看>>
file upload download
查看>>
mysql时间区间的查询
查看>>
游戏引擎剖析
查看>>
elasticsearch更改mapping(不停服务重建索引)
查看>>
作品第三课-----网页简易时钟
查看>>
Java复习:集合框架(一张图)
查看>>
online学习和offline学习
查看>>
win10安装多个mysql实例
查看>>
ASP.NET Core本身已经集成了一个轻量级的IOC容器
查看>>
JavaScript | 事件
查看>>
002 使用Appender扩展logger框架
查看>>
hdu4366 Successor (dfs序+zkw线段树)
查看>>
HDU 2674
查看>>
BUNOJ 4044
查看>>
JavaSctipt语句for循环的思考
查看>>
指令篇:ls、pwd、date、cal、bc、cd、mkdir、cp、mv、rm、basename、dirname
查看>>
框架代码 3
查看>>
CentOS7中编写java编译执行脚本
查看>>
Docker简介(1)
查看>>