贪心算法----nyoj 14 会场安排_n^_^呀策m ,i,z门票4_ke_yi_的博客-程序员宅基地

技术标签: --------贪心算法  

题目详情:

会场安排问题

时间限制:3000 ms  |  内存限制:65535 KB

描述

学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。

输入

第一行是一个整型数m(m<100)表示共有m组测试数据。
每组测试数据的第一行是一个整数n(1<n<10000)表示该测试数据共有n个活动。
随后的n行,每行有两个正整数Bi,Ei(0<=Bi,Ei<10000),分别表示第i个活动的起始与结束时间(Bi<=Ei)

输出

对于每一组输入,输出最多能够安排的活动数量。
每组的输出占一行

样例输入

2
2
1 10
10 11
3
1 10
10 11
11 20

样例输出

1
2

解题思路:先将数据进行排序,根据时间段的结束时间从小到大安排,然后根据开始时间从大到小安排,最后从序列中找到第一个时间段,再将一天的开始时间设置为前面那段时间的结束时间,再找下面的时间段,知道所有的时间段都找完。

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN=1e4+10;
struct Time
{
    int b,e;
};
bool operator<(Time a,Time b){
    if(a.e==b.e)
        return a.b>=b.b;
    return a.e<b.e;
}
int main()
{
    ios::sync_with_stdio(false);//关闭同步,节约时间
    int m,n,i,count,first;
    cin>>m;
    while(m--){
        cin>>n;
        vector<Time> t(n);
        for(i=0;i<n;i++){
            cin>>t[i].b>>t[i].e;
        }
        sort(t.begin(),t.end());
        first=-1;i=0;count=0;
        while(i<n){
            if(t[i].b>first){
                count++;
                first=t[i].e;
            }
            i++;
        }
        cout<<count<<endl;
    }
    return 0;
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ke_yi_/article/details/81217739

智能推荐

Kettle连接MySQL数据库找不到驱动问题解决-程序员宅基地

连接报错:错误连接数据库 [tcc] : org.pentaho.di.core.exception.KettleDatabaseException:Error occurred while trying to connect to the databaseDriver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.org.gjt.m.

css sprite 雪碧图-程序员宅基地

特点:1.静态图片,不随用户信息的变化而变化2.小图片,图片容量比较小3.加载量比较大一些大图不建议拼接成雪碧图有效的减少http请求,加速内容的显示我们每请求一次,就会和服务器连接一次,而建立连接是需要额外的时间的 css sprite实现原理css background-position拼合背景图的小图(x,y)为负值 实现方式:ps手...

C-歌德巴赫猜想的证明 SDUT_c语言实现验证哥赫巴德猜想-程序员宅基地

Time Limit: 1000 ms Memory Limit: 65536 KiBProblem Description验证“每个不小于6的偶数都是两个素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。Input输入一个不小于6的偶数n。Output找出两个素数,使它们的和为n。只需要输出其中第一个素数最小的一组数据即可。Sample Input80..._c语言实现验证哥赫巴德猜想

关于无向图中环的研究-程序员宅基地

1、非生成树边必定是返祖边。 证明:设边(u,v),depth(u)≤depth(v)(u,v),depth(u)\le depth(v)假如u不是v的祖先,那么v必然会dfs到u使得u是v的儿子,便与depth(u)≤depth(v)depth(u)\le depth(v)矛盾。 2、对于链\子树\单点询问,动态边双联通分量可以直接等价成生成树中的lca x,把其他点清零。(bzoj2959长

OpenSceneGraph实现的NeHe OpenGL教程 - 第十一课_nehe opengl教程 第十一课-程序员宅基地

简介这节课我们将创建一个以正弦波方式飘动的旗帜。本课所用到的知识在前面的课程中都有讲解,并没有什么新的内容实现首先创建我们的场景,关于旗帜的顶点坐标在NeHe教程中已经有非常详细的介绍,本文就不在赘述了。[cpp] view plain copy float points[45][45][3];_nehe opengl教程 第十一课

Android控件之ToggleButton-程序员宅基地

在我们日常使用app的过程中,经常会见到开关按钮,点击控制开和关,这种功能在Android中可以通过ToggleButton控件来实现。 什么是ToggleButton? ToggleButton有两种状态,选中和未选中状态,并且需要为不同的状态设置不同的值 常用属性:android:checked=”true”来控制是否打开,true为打开,默认为false androi

随便推点

解决Linux删除用户时进程占用,及新建账户提示主目录已存在、信箱文件已存在的问题_useradd:警告:此主目录已经存在。-程序员宅基地

文章目录解决Linux删除用户时提示进程占用(currently used by process)运行环境:故障描述:问题原因:解决办法:Linux新建一个相同用户名的用户时提示主目录已存在、信箱文件已存在(Creating mailbox file: 文件已存在)运行环境:故障描述:问题原因:解决办法:总结:解决Linux删除用户时提示进程占用(currently used by proces..._useradd:警告:此主目录已经存在。

dojo_加快Dojo TreeGrid的性能-程序员宅基地

当您要在网页上显示层次结构数据时,Dojo v1.4 TreeGrid是一个有用的小部件。 但是,如果您的数据集很大, TreeGrid的性能将非常慢。 在本文中,学习如何通过自定义TreeGrid和QueryStore解决此问题。 本文介绍了使用两个小部件时可能遇到的问题,解释了错误的原因,然后帮助您创建解决方案。 您还可以下载本文中使用的示例代码。 Dojo网格和大数据集 当然,您..._loadedchildren

ViewBag 和 ViewData 的用法和区别_viewbagdata-程序员宅基地

所谓的ViewBag是asp.net mvc3 中对ViewData 的 一种动态封装,用法更方便。它赋值的方法:ViewBag.Name = “jack”;其实ViewBag[“Name”] 和ViewData.name是一样的效果,只是方法不一样。ViewData 是一个特殊的字典类的名称,我们可以用标准语法进行修改或赋值,比如:ViewData[“Name”] = “jack”;区别在于:用ViewBag来代替ViewData使用着更快捷,但是相对于ViewData来说,ViewBag还有一._viewbagdata

QueryWrapper方法解释_querywrapper.ne-程序员宅基地

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取.queryWrapper.lt()——小于queryWrapper.le()——小于等于queryWrapper.gt()——大于queryWrapper.()——大于等于queryWrapper.eq()——等于queryWrapper.ne()——不等于queryWrap_querywrapper.ne

区间列表的交集计算_计算多个区间的交集 * 区间用长度为2的数字数组表示,如[2, 5]表示区间2到5(包-程序员宅基地

给定两个由一些闭区间组成的列表,每个区间列表都是成对不相交的,并且已经排序。返回这两个区间列表的交集。(形式上,闭区间 [a, b](其中 a &lt;= b)表示实数 x 的集合,而 a &lt;= x &lt;= b。两个闭区间的交集是一组实数,要么为空集,要么为闭区间。例如,[1, 3] 和 [2, 4] 的交集为 [2, 3]。)示例:输入:A = [[0,2],[5,10..._计算多个区间的交集 * 区间用长度为2的数字数组表示,如[2, 5]表示区间2到5(包