2882: 美食节之感恩父母

描述

虽然美食节的食品又多又好吃,但是在大家心目中,最好吃的还是亲爱的爸爸妈妈煮的爱心饭菜,可能没有美食节种类那么多,但是与饭菜一起煮进去的还有父母浓浓的爱啊
我们acm队也是一个大家庭,xzc也会煮菜哦,请设想假如某天acm队的成员一起到crq (crq是我们集训队的家长哈)家里吃饭去,crq家有材料若干,xzc会做m种菜,但是每种菜所需的材料种类数量是不一样的,现在把crq家的材料都排成一排从0开始标记好,xzc做菜时就在这排标记好材料里面抽一段用来做菜,现在xzc要好好表现了,请你求xzc总共能做多少种菜?

输入

输入数据有多组,每组数据第一行有一个数m, m代表xzc会做m种菜;
接下来有m行,每行两个正整数a,b,代表这种菜所需的材料是截取标记好的crq家的材料中从a至b的材料;当m等于0的时候结束循环

输出

每组数据输出一个max,max代表xzc在这次acm聚餐时能做出来的菜最多有多少种。

样例输入

样例输出





思路就是同一段的食材是不可以重复使用的。所以我们要尽量的让同样多的食材做出更多的菜。

所以我们就想到用贪心来做。先以结束的食材编号为主要的依据进行升序排序,当结束食材的变号相同是以开始的食材的编号为依据进行升序排序。

然后要尽可能多的选择出来食材去做菜。

代码如下:

#include<stdio.h>
#include<algorithm>
using namespace std;
struct A
{
int a,b;
}zi[1000];
bool cmp(A x,A y)
{
if(x.b==y.b)return x.a<y.a;
else return x.b<y.b;
}
int main()
{
int m,a,b,i,j;
while(scanf("%d",&m),m)
{
int c=0;
for(i=0;i<m;i++)
scanf("%d%d",&zi[i].a,&zi[i].b);
sort(zi,zi+m,cmp);
for(i=1,j=0,c=1;i<m;i++)
{
if(zi[i].a>=zi[j].b)
{
c++;
j=i;
}
}
printf("%d\n",c);
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wumingiswu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值