Peng Lv

毋意,毋必,毋固,毋我。 言必行,行必果。

导航

POJ 3988 Selecting Courses (Greedy)

{POJ} {3988} {Selecting courses}

Greedy Algorithm, time is fixed and just find the earlest finished courses.

#include <iostream>
#include <string>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <queue>
#include <stack>
#include <list>
#include <algorithm>
using namespace std;
#define rep(a,x,y) for(a=x;a<y;++a)
#define CLR(x,y) memset(x,y,sizeof(x))
int n,ans;
typedef struct{
    int a,b;
}Node;
bool operator<(const Node& a, const Node& b)
{
    if(a.b == b.b)
        return a.a < b.a;
    return a.b < b.b;
}
int work()
{
    int i,j,tmp;
    int a,b,k;
    bool v[500];
    Node node[500];
    while(scanf("%d",&n)) {
        if( 0 == n )
            break;
        rep(i,0,n)
            scanf("%d%d",&node[i].a,&node[i].b);
        sort(node,node+n);
        ans = 0;
        rep(i,0,5){
            rec = 0;
            tmp = 0;
            CLR(v,0);
            for( j = i; j < 1005; j += 5){
                rep(k,0,n) {
                    if( !v[k] && node[k].a <= j && node[k].b > j ){
                        v[k] = true;
                        ++tmp;
                        break;
                    }
                }
            }
            if( ans < tmp )
                ans = tmp;
        }
        printf("%d\n",ans);
    }
    return 0;
}
int main()
{
    work();
    return 0;
}

 

posted on 2012-05-15 13:01  Lvpengms  阅读(283)  评论(0编辑  收藏  举报