zoukankan      html  css  js  c++  java
  • 【ACM】nyoj_14_会场安排问题_201308151955

    会场安排问题
    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4
    描述
    学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,每个时间最多安排一个活动。现在小刘有一些活动计划的时间表,他想尽可能的安排更多的活动,请问他该如何安排。

    输入
    第一行是一个整型数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
    提示
    注意:如果上一个活动在t时间结束,下一个活动最早应该在t+1时间开始

    思路:
    贪心算法,这个题中再次用到了qsort排序。对结束的时间进行排序,然后再进判断。如果后一个的开始时间大于前一个的结束时间,那么计数器就加一。思路就是这样的,下面就是实现这个函数。先定义一个结构体把开始时间和结束时间进行储存。

    #include <stdio.h>
    #include <stdlib.h>

    typedef struct Node{
        int a;
        int b;
    }Node;

    Node s[10100];

    int cmp(const void *a,const void *b)
    {
        return (*(Node *)a).b - (*(Node *)b).b;
    }

    int main()
    {
        int N;
        scanf("%d",&N);
        while(N--)
        {
            int i,j,m,num,t;
            scanf("%d",&m);
            for(i=0;i<m;i++)
            scanf("%d %d",&s[i].a,&s[i].b);
            qsort(s,m,sizeof(s[0]),cmp);
            num=1;t=s[0].b;
            for(i=1;i<m;i++)
            {
                if(s[i].a<=t)
                continue;
                else
                {
                    num++;
                    t=s[i].b;
                }
            }
            printf("%d ",num);
        }
        return 0;
    }

  • 相关阅读:
    leetcode Convert Sorted List to Binary Search Tree
    leetcode Convert Sorted Array to Binary Search Tree
    leetcode Binary Tree Level Order Traversal II
    leetcode Construct Binary Tree from Preorder and Inorder Traversal
    leetcode[105] Construct Binary Tree from Inorder and Postorder Traversal
    证明中序遍历O(n)
    leetcode Maximum Depth of Binary Tree
    限制 button 在 3 秒内不可重复点击
    HTML 和 CSS 画三角形和画多边行基本原理及实践
    在线前端 JS 或 HTML 或 CSS 编写 Demo 处 JSbin 与 jsFiddle 比较
  • 原文地址:https://www.cnblogs.com/xl1027515989/p/3260765.html
Copyright © 2011-2022 走看看