poj2376(贪心+快排)
来源:互联网 发布:淘宝发空包怎么操作 编辑:程序博客网 时间:2024/05/16 13:47
题意:有n头牛,每头牛都有一段工作时间,问工作t小时最少需要几头牛。即求出最少的区间数覆盖[1,t];
题目链接:http://poj.org/problem?id=2376
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;struct node{ int x; int y;}s[30000];int cmp(const void*a, const void*b){ if((*(struct node*)a).x!=(*(struct node*)b).x) return (*(struct node*)a).x - (*(struct node*)b).x; else return (*(struct node*)b).y - (*(struct node*)a).y;}int main(){ int n; int t; int ans,End,time; while(scanf("%d %d", &n, &t) != -1) { for(int i = 0; i < n; i++) scanf("%d %d", &s[i].x, &s[i].y); qsort(s,n,sizeof(s[0]),cmp); if(s[0].x!=1)ans=-1; else ans = 1; time = s[0].y; if(time<t&&ans==1) for(int i = 1; i < n; i++) { if(s[i].x==s[i-1].x)continue; if(s[i].x > time+1 || time >= t)break; if(s[i].y > time) { End = s[i].y; for(int j = i+1; j < n; j++) { if(s[j].x==s[j-1].x)continue; if(s[j].x<=time+1&&s[j].y>=End) { End = s[j].y; i=j; } } time = End; ans++; } } if(time<t)ans=-1; printf("%d\n", ans); } return 0;}
0 0
- poj2376 快排+贪心
- poj2376(贪心+快排)
- poj1328 快排+贪心
- poj2376 贪心
- 贪心:POJ2376
- POJ2376(贪心)
- poj2376(贪心)
- 0.9poj2376(贪心)
- POJ2376 Cleaning Shifts 贪心
- poj2376 Cleaning Shifts 贪心
- POJ2376 Cleaning Shifts(贪心)
- POJ2376 Cleaning Shifts 【贪心】
- poj2376区间贪心
- poj2376(贪心)
- POJ2376贪心Cleaning Shifts
- poj2376 贪心算法
- POJ2376 Cleaning Shifts(贪心)
- POJ2376 Cleaning Shifts (贪心)
- centos6.5 安装gitlab
- Java集合框架总结(5)——Map接口的使用
- redis系统学习-set
- C语言操作MySql
- Public-DNS(公共DNS)介绍
- poj2376(贪心+快排)
- notepad
- redis系统学习-sorted-set
- Android startActivityForResult requestCode限制
- typedef函数指针
- redis系统学习--list
- 耦合变压器的作用
- 亲测 --MyEclipse Professional 2014 破解
- pthread_cleanup_push()/pthread_cleanup_pop()的详解