POJ 2376 Cleaning Shifts 贪心
2015-12-17 00:12
323 查看
Cleaning Shifts
题目连接:
http://poj.org/problem?id=2376Description
Farmer John is assigning some of his N (1 <= N <= 25,000) cows to do some cleaning chores around the barn. He always wants to have one cow working on cleaning things up and has divided the day into T shifts (1 <= T <= 1,000,000), the first being shift 1 and the last being shift T.Each cow is only available at some interval of times during the day for work on cleaning. Any cow that is selected for cleaning duty will work for the entirety of her interval.
Your job is to help Farmer John assign some cows to shifts so that (i) every shift has at least one cow assigned to it, and (ii) as few cows as possible are involved in cleaning. If it is not possible to assign a cow to each shift, print -1.
Input
Line 1: Two space-separated integers: N and TLines 2..N+1: Each line contains the start and end times of the interval during which a cow can work. A cow starts work at the start time and finishes after the end time.
Output
Line 1: The minimum number of cows Farmer John needs to hire or -1 if it is not possible to assign a cow to each shift.Sample Input
3 101 7
3 6
6 10
Sample Output
2Hint
题意
给你n个区间,要求你选出最少的区间,使得能够覆盖[1,t]题解:
dp很简单,dp[i] = min(dp[j])+1,其中需满足a[j].r+1>=a[i].l贪心也很简单,每次我们扫的时候,直接扫到能够转移到的最右边就好了(其实也是DP思想..
期末考试前写道水题攒攒RP T T
代码
#include<algorithm> #include<iostream> #include<stdio.h> using namespace std; struct node { int x,y; }; bool cmp(node a,node b) { if(a.x==b.x)return a.y>b.y; return a.x<b.x; } node p[25005]; int main() { int n,t; scanf("%d%d",&n,&t); for(int i=1;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); sort(p+1,p+1+n,cmp); int l = 0; int ans = 0; int i = 1; while(i<=n) { if(p[i].x>l+1)return puts("-1"); int tmp = l; while(i<=n&&p[i].x<=l+1) { tmp = max(tmp,p[i].y); i++; } l = tmp;ans++; if(l>=t)return printf("%d\n",ans); } return puts("-1"); }
相关文章推荐
- STL_6: STL标准库
- [LeetCode] Interleaving String 解题思路
- 在Spring下集成ActiveMQ
- HDU2844:Coins
- R读书笔记之特征工程(一)空值处理
- 进程栈与线程栈
- Android之基于xmpp openfire smack开发之smack类库介绍和使用[2]
- Linux 初始化 init 系统,第 3 部分: Systemd
- LeetCode 172:Factorial Trailing Zeroes
- redis基本命令及应用场景
- 年终总结#我的2012年-“初”
- Linux 初始化 init 系统,第 2 部分: UpStart
- 微信开发之使用java获取签名signature
- CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
- PHP响应post请求上传文件的方法
- PHP实现发送邮件的方法(基于简单邮件发送类)
- php提交post数组参数实例分析
- WordPress中获取页面链接和标题的相关PHP函数用法解析
- PHP附件下载中文名称乱码的解决方法
- WordPress中用于获取文章作者与分类信息的方法整理