• A


    A - 活动安排问题

    有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室?  
    Input第一行一个正整数n (n <= 10000)代表活动的个数。 
    第二行到第(n + 1)行包含n个开始时间和结束时间。 
    开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000Output一行包含一个整数表示最少教室的个数。Sample Input

    3
    1 2
    3 4
    2 9

    Sample Output

    2

    虽然说,以前做过这道题了,但是现在再做一遍的时候还是感觉挺吃力的,思想比基本的贪心多了一点,用时间段去找房间,可以用就把该时间段放进去,不能的话就再开一个房间

    AC代码

    #include<stdio.h>
    #include<algorithm>
    #include<iostream>
    #include<string.h>
    const int maxn = 10010;
    
    using namespace std;
    
    std::pair<int, int> ivt[maxn];
    
    int main()
    {
        int n, ans;
        int i, j;
        int b[maxn];
    
        scanf("%d", &n);
    
        ans = 1;
        memset(b, 0, sizeof(b));
    
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &ivt[i].first);
            scanf("%d", &ivt[i].second);
        }
    
        sort(ivt, ivt + n);
    
        b[0] = ivt[0].second;
    
        for(i = 1; i < n; i++)
        {
            for(j = 0; j < ans; j++)
            {
                if(b[j] <= ivt[i].first)
                {
                    b[j] = ivt[i].second;
                    break;
                }
            }
    
            if(j == ans)
            {
                b[ans] = ivt[i].second;
                ans++;
            }
        }
    
        printf("%d
    ", ans);
    
        return 0;
    }
    View Code
    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    小心使用宏
    常见文件、目录、路径操作函数
    链表法页框的分配和去配
    获取调试符号文件
    Visual C++ Runtime Error 调试
    HEAP: Free Heap block XXXX modified at XXXX after it was freed
    磁盘操作 API
    【转】浅谈大型网站动态应用系统架构 Mr
    jQuery1.3.1 Tab选项卡 Mr
    spring依赖注入思想 Mr
  • 原文地址:https://www.cnblogs.com/h-hkai/p/8128103.html
Copyright © 2020-2023  润新知