nswoj-今年双11不AC

2307 - 今年双11不AC

题目描述

双十一快要到了,本来是一件开心的事情,但是NQD学长却因为无法控制自己的双手为由,提前把钱包花了个透心凉,导致他现在十分内疚。

所以下定决心坚决执行剁手行动,但是又怕那天忍受不住诱惑。所以他想到了在双十一当天出去看一天电影,以此克制难耐不住的双手。但是当他打开手机查询当天电影的信息时,眼花缭乱的电影又让他十分苦恼,因为他抱着消磨时光的态度出去看电影的,所以他只想看尽量多的电影,而且每部无论多无聊,都要完整看完。当告诉你每部电影的开始和结束时间的时候,你是否能帮助无聊的NQD学长,求出最多能完整看到的电影的个数?

输入

输入数据包含多个测试实例,每个测试实例的第一行只有一个整数n(1<=n<=100),表示当天电影的总数,然后是n行数据,每行包括两个数据Ti_s,Ti_e (1<=i<=n),分别表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。

输出

对于每个测试实例,输出能完整看到的电视节目的个数,每个测试实例的输出占一行。

样例输入
31 1010 208 12
样例输出
2
思路分析:
	这是一道简单的贪心问题,与房间安排问题相似,从小到大排序后比较前者结束时间与后者
开始时间,若结束时间小于开始时间,则可以看下一场电影,否则不能。
参考代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
struct t
{
	int x;
	int y;
};
bool cmp(t c,t d)
{
	return c.x<d.x;
}
int main()
{
	int n;
	while(~scanf("%d",&n))
	{
		int i,j;
		struct t a[100],s;
		for(i=0;i<n;i++)
		{
			scanf("%d%d", &a[i].x ,&a[i].y );
		}
//		for(i=0;i<n-1;i++)//冒泡排序
//		{
//			for(j=0;j<n-i-1;j++)
//			{
//				if(a[j].x >a[j+1].x )
//				{
//				    s=a[j];
//				    a[j]=a[j+1];
//				    a[j+1]=s;
//				}
//			}
//		}
		sort(a,a+n,cmp);
		int cnt=0,l=n-1;
		for(i=n-2;i>=0;i--)
		{
			if(a[l].x >=a[i].y )
			{
				cnt++;
				l=i;
			}
		}
		printf("%d\n",cnt+1);
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值