题目链接:https://qduoj.com/problem/164/点击打开链接
真-签到-炸老师的日记
发布时间: 2017年6月7日 19:29 最后更新: 2017年6月18日 12:29 时间限制: 1000ms 内存限制: 128M
PS:炸酱面老师着急认亲,所以他麻烦我帮他宣传下第六题
炸酱面同学在退役之后时间十分充裕,一次他很兴奋的和旁边的同学说,现在要退役了哇!是真的舒坦,都有时间找女朋友了。而且他找到了N个女朋友。
但是炸酱面同学时间有限,而且为了保证自己的生命和财产安全,并且不与任何女朋友闹矛盾,所以在陪伴第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;
}