• 51nod 1428 活动安排问题


    1428 活动安排问题 

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

    贪心加优先队列。

    先让开始时间排序,一开始开一个教室,把结束时间压入队列,然后遍历。开始时间>=队顶的话就说明可以使用对顶这个教室。否则就重新开一间教室。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 10010;
     4 struct Nod {
     5     int l, r;
     6 }nod[N];
     7 int n;
     8 bool cmp(Nod &a, Nod &b) {
     9     return a.l < b.l;
    10 }
    11 int main() {
    12     priority_queue<int,vector<int>, greater<int> >que;
    13     cin >> n;
    14     for(int i = 0; i < n; i ++) {
    15         cin >> nod[i].l >> nod[i].r;
    16     }
    17     sort(nod,nod+n,cmp);
    18     que.push(nod[0].r);
    19     int ans = 1;
    20     for(int i = 1; i < n; i ++) {
    21         if(nod[i].l >= que.top()) {
    22             que.pop();
    23             que.push(nod[i].r);
    24         } else que.push(nod[i].r);
    25         int MAX = que.size();
    26         ans = max(ans,MAX);
    27     }
    28     cout << ans << endl;
    29     return 0;
    30 }
  • 相关阅读:
    grub menu from pygrub
    Unix调试的瑞士军刀:lsof
    Quantum & r2q
    Linux TC基于CBQ队列的流量管理范例
    hfsc
    用bash做个tcp客户端
    [转]HFSC Scheduling with Linux
    [转]如何判断 Linux 是否运行在虚拟机上
    TSO
    使用VS2008进行WEB负载测试
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/8870445.html
Copyright © 2020-2023  润新知