标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 18151 | Accepted: 4620 |
Description
Input
Output
Sample Input
3 10 1 7 3 6 6 10
Sample Output
2
Hint
Source
#define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<algorithm> using namespace std; const int N_max = 25000; pair<int, int>cows[N_max]; int N, T; bool cmp(const pair<int, int>&a, const pair<int, int>&b) { return (a.first<b.first||(a.first==b.first&&a.second>b.second)); } int solve() { int used_cows = 0; int end = 0, num = 0; while (end < T) { int begin = end + 1;//此时的end是上一头牛的工作结束时间,此时的begin为当前的牛工作开始时间要在begin之前 for (int i = num;i < N;i++) {//选出新的一头牛,使得工作结束时间越晚越好 if (cows[i].first <= begin) { if (cows[i].second >= begin)//别忘加等于,有可能牛的工作区间只有1个,譬如3-3 end = max(end, cows[i].second);//在能选的牛中选一条,使得工作的时间到最晚 } else { num=i;//没有符合要求的牛可以挑选了,换新牛 break; } } //判断这选出来的牛是否符合要求,即它的工作结束时间必须要大于begin,否则之间有区间不能被覆盖 if (begin > end) {//此时begin是大于等于当前挑选出来的牛的开始时间,而end是当前牛的工作结束时间 return -1; } else used_cows++; } return used_cows; } int main() { scanf("%d%d", &N, &T); for (int i = 0;i < N;i++) scanf("%d%d", &cows[i].first, &cows[i].second); sort(cows, cows + N,cmp); cout << solve() << endl; return 0; }
标签:
原文地址:http://www.cnblogs.com/ZefengYao/p/5810966.html