现在的位置: 首页 > 综合 > 正文

HUD 3697 Selecting courses 2010 Asia Fuzhou Regional Contest E题 贪心

2014年09月05日 ⁄ 综合 ⁄ 共 635字 ⁄ 字号 评论关闭

 

View Code

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

struct node
{
    int l, r;
}p[303];

bool vis[303];
int n;

bool cmp(node a, node b)
{
    return a.r < b.r || a.r == b.r && a.l > b.l;
}
int main()
{
    int i, j, k;
    int ll, rr;
    while( ~scanf("%d", &n) && n)
    {
        ll = 1003; rr = -1; 
        for(i = 0; i < n; i++)
        {
            scanf("%d%d", &p[i].l, & p[i].r);
            if(p[i].l < ll) ll = p[i].l;
            if(p[i].r > rr) rr = p[i].r;
        }
        sort(p, p+n, cmp);
        int cnt, ans = -1;
        for(k = 0; k <= 4; k++)
        {
            cnt = 0;
            memset(vis, 0, sizeof(vis));
            for(i = k+ll; i <= rr; i += 5)
            {
                for(j = 0; j < n; j++)
                {    
                    if(vis[j]) continue;
                    if(i >= p[j].l && i < p[j].r)break;//注意左边取得到,右边取不到
                }
                if(j == n) continue;
                vis[j] = 1;
                //printf("i = %d j = %d\n", i, j);
                cnt++;
            }
            if(cnt > ans ) ans = cnt;
        }
        printf("%d\n", ans);

    }
    return 0;

 

抱歉!评论已关闭.