XidianOJ 1091 看Dota视频的V8

题目描述

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;
}
相关文章
相关标签/搜索