qduoj 真-签到-炸老师的日记(贪心)

题目链接:https://qduoj.com/problem/164/点击打开链接

真-签到-炸老师的日记

发布时间: 2017年6月7日 19:29   最后更新: 2017年6月18日 12:29   时间限制: 1000ms   内存限制: 128M

PS:炸酱面老师着急认亲,所以他麻烦我帮他宣传下第六题

炸酱面同学在退役之后时间十分充裕,一次他很兴奋的和旁边的同学说,现在要退役了哇!是真的舒坦,都有时间找女朋友了。而且他找到了N个女朋友。

image.png

但是炸酱面同学时间有限,而且为了保证自己的生命和财产安全,并且不与任何女朋友闹矛盾,所以在陪伴第Ai个女朋友的时间Li~Ri内,不能碰到其他的女朋友。

然而炸酱面同学胆子很大,而且对女朋友"很好",所以他想陪伴尽可能多的女朋友,当然在陪伴某个女朋友的时间内,不与其他的女朋友见面。

假设他的N个女朋友在昨晚与他约定在Li~ Ri时间内与他见面,现在他要去陪第i号女朋友了,所以他想让你帮助他制定时间表,使得他可以陪伴尽可能多的女朋友,而且不发生矛盾。

例如 第一个女朋友约定1~ 5时间与他见面,

第二个女朋友约定在2~3时间与他见面

第三个女朋友约定在3~6时间内与他见面。

他为了满足尽可能多的女朋友的需要所以选择了陪伴第二个女朋友和第三个女朋友。

现在他要去约会了,不过他的智力似乎。。有些。。好像。。没错!正因如此这种人生大事当然要交给他最信任的学弟学妹们了啊!

所以请你们告诉他最多可以和多少个女朋友约会! 

第一行: 1个数N,表示炸酱面同学女朋友的数量(2<=N<=10000)
第2 - N + 1行:每行2个数,表示第i个女朋友约定在Li到Ri(-10^9 <= L,R <= 10^9)

输出做多可以选择多少个女朋友

  复制
3
1 5
2 3
3 6
2

先对数据进行排序 从当前点开始 然后记录他能到达的地方 然后步数加一 如果此时步数的值大于已经记录的值 就更新 这样保证每个线段都是之前取最优的

#include <stdio.h>
#include <queue>
#include <stack>
#include <iostream>
#include <math.h>
#include <limits.h>
#include <string.h>
#include <algorithm>
#include <string>
using namespace std;
struct xjy
{
    int x;
    int y;
    int num;
}a[10000];
bool cmp1(xjy a,xjy b)
{
    if(a.x==b.x)
        return a.y<b.y;
    return a.x<b.x;
}
int main()
{
    int n=0;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d%d",&a[i].x,&a[i].y);
        if(a[i].x>a[i].y)
        {
            int t=a[i].x;
            a[i].x=a[i].y;
            a[i].y=a[i].x;
        }
    }
    sort(a,a+n,cmp1);

    for(int i=0;i<n;i++)
    {

            int be=a[i].y;
            int num1=a[i].num+1;
            a[i].num+=1;
            for(int j=i;j<n;j++)
            {
                if(a[j].x>=be)
                {
                    if(a[j].num<=num1)
                    {
                        a[j].num=num1;
                    }
                }
            }
    }
    int num1=0;
    for(int i=0;i<n;i++)
        num1=max(num1,a[i].num);
    printf("%d",num1);
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值