Meeting Room Arrangement(贪心)

来源:互联网 发布:观军事知天下 编辑:程序博客网 时间:2024/06/10 11:39

链接:https://vjudge.net/contest/161547#problem/G

题意:有一个可以从0用到10的房间,给出一系列需要用房间的时间段,求用到房间的最大次数
思路:每一个时刻都只能有一个会议在用,那么每个时刻用的时间必定是最短的那个,如果下一个会议用完时间比上一个的要短,那么必定选截止时间短的,如果下一个的起始时间比上一个的截止时间要大,那么最大次数加一。

代码:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <algorithm>using namespace std;struct node{    int mini;};node meet[10];int main(){    int t;    cin >> t;    while(t--)    {        for(int i=0; i<10; i++)            meet[i].mini = 11;        int a,b;        while(cin >> a >> b && a!=0 || b != 0)        {            if(b < meet[a].mini)                meet[a].mini = b;        }        int ans = 1, k=0;        for(int i=0; i<10; i++)        {            if(meet[i].mini != 11 && k == 0)            {                k = meet[i].mini;                continue;            }            if(meet[i].mini != 11)            {                if(i < k && meet[i].mini < k)                {                    k = meet[i].mini;                }                else if(i >= k)                {                    ans++;                    k = meet[i].mini;                }            }        }        cout << ans << endl;    }    return 0;}
0 0
原创粉丝点击