V8做爲一個Dota lover,由於在某次和小夥伴開黑對戰「簡單的電腦」時被電腦血虐,V8痛定思痛以後,發現是時候學一發Dota教學視頻了。如今,V8在網上找到了n個Dota直播教學視頻,而且知道每一個視頻的開始時間和結束時間,如今V8想知道他做出合理安排以後他最多看多少個完整的Dota視頻。ios
V8做爲一個Dota lover,由於在某次和小夥伴開黑對戰「簡單的電腦」時被電腦血虐,V8痛定思痛以後,發現是時候學一發Dota教學視頻了。如今,V8在網上找到了n個Dota直播教學視頻,而且知道每一個視頻的開始時間和結束時間,如今V8想知道他做出合理安排以後他最多看多少個完整的Dota視頻。ios
多組數據,n==0時文件結束。每組數據第一行一個數字n(1<=n<=10^3),接下來n行每行兩個數字li,ri,表示視頻的開始時間和結束時間(0<=li<=ri<=2*10^4)。ide
每組數據一行輸出,表示V8最多能看到的完整教學視頻的數量。spa
--正文code
貪心的線段覆蓋問題,換了個皮視頻
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct VideoNode { int begin; int end; }; struct VideoNode video[1001]; int cmp(struct VideoNode v1,struct VideoNode v2){ return (v1.end < v2.end); } int main(){ int n; while (scanf("%d",&n) != EOF){ if (n == 0) break; int i; for (i=0;i<n;i++){ int begin,end; scanf("%d %d",&begin,&end); video[i].begin = begin; video[i].end = end; } sort(video,video+n,cmp); int total = 0,time = -1; for (i=0;i<n;i++){ if (video[i].begin >= time){ time = video[i].end; total ++; } } printf("%d\n",total); } return 0; }