zoukankan      html  css  js  c++  java
  • 房间安排

    描述

    2010年上海世界博览会(Expo2010),是第41届世界博览会。于2010年5月1日至10月31日期间,在中国 上海市举行。本次世博会也是由中国举办的首届世界博览会。上海世博会以“城市,让生活更美好”(Better City,Better Life)为主题,将充分探索21世纪城市生活。

    这次世博会总投资达450亿人民币,创造了世界博览会史上的最大规模记录。吸引200个国家和国际组织参展。预计有7000万人次的参观者。

    为了更好地接待在这期间来自世界各地的参观者,如何合理安排各宾馆的住房问题提到了日程。组委会已接到了大量的客户住宿定单,每张定单的内容包括要 住宿的房间数,开始住宿时间和要住的天数。为了便于整个城市各宾馆的管理,组委会希望对这些定单进行安排,目的是用尽可能少的房间来满足这些定单,以便空 出更多的房间用于安排流动游客。

    组委会请求DR.Kong来完成这个任务,对这些定单进行合理安排,使得满足这些定单要求的房间数最少。

    假设:某个定单上的游客一旦被安排到某房间,在他预定住宿的期间内是不换房间的。为了简化描述,定单上的开始住宿时间为距离现在的第几天。例如,定单为(10,30,5)表示游客要求使用10个房间,第30天开始连住5天。

    输入
    第一行:T 表示有T组测试数据
    每组测试数据第一行:N 表示定单数
    每组测试数据接下来有N行,每行有三个整数 A B C 表示房间数,开始住宿时间和天数
    1<=T<=100
    1<=N<=10000 1<=A<=10 1<=B<=180 1<=c<=10
    输出
    输出一个整数,为满足所有定单要求的最少房间数。
    样例输入
    1
    3
    3 10 4
    4 9 3
    3 12 6
    样例输出
    7
    来源
    第三届河南省程序设计大赛 
    http://acm.nyist.net/JudgeOnline/problem.php?pid=168
     1 /*这题很简单,但是当时思路完全和题解的不一样,如果把订单当作对象做会很难做出来,对每天的所需的房间数建立数组*/
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<algorithm>
     5 using namespace std;
     6 int main()
     7 {
     8     int T;
     9     scanf("%d",&T);
    10     while(T--)
    11     {
    12         int N;
    13         int a,b,c,j,i;
    14         int p[1000];
    15         scanf("%d",&N);
    16         memset(p,0,sizeof(p));
    17         for(int i=0;i<N;i++)
    18         {
    19             scanf("%d%d%d",&a,&b,&c);
    20             for(j=b;j<b+c;j++)
    21                 p[j]+=a;
    22         }
    23         printf("%d
    ",*max_element(p,p+1000));
    24     }
    25 }
    #include<stdio.h>/*错误思路,而且我还没写完*/
    #include<algorithm>
    using namespace std;
    typedef struct 
    {
        int fang;
        int time;
        int date;
    }order;
    int temp(order n,order m)
    {
        if(n.time<=m.time)
            return 1;
        return 0;
    }
    int main()
    {
        int T,N,i,j;
        scanf("%d",&T);
        while(T--)
        {
            int count=0,count_=0;
            scanf("%d",&N);
            order a[N];
            for(i=0;i<N;i++)
                scanf("%d%d%d",&a[i].fang,&a[i].time,&a[i].date);
            sort(a,a+N,temp);
            for(i=0;i<N;i++)
            {
                count_=a[i].fang;
                for(j=0;j<i;j++)
                {
                    if(a[i].time>=a[j].time+a[j].fang)
                    {
                        a[j].time=a[i].time;
                        a[j].date=a[i].date;
                        count_=0;
                        break;
                    }
                            
                }
                count+=count_;
            }
            printf("%d
    ",count);
        }
    }
  • 相关阅读:
    奇数阶魔方问题
    《DSP using MATLAB》示例9.3
    《DSP using MATLAB》示例9.2
    《DSP using MATLAB》示例9.1
    找个目标很重要
    《DSP using MATLAB》示例Example 8.30
    《DSP using MATLAB》示例Example 8.29
    《DSP using MATLAB》示例Example 8.28
    《DSP using MATLAB》示例Example 8.27
    《DSP using MATLAB》示例Example 8.26
  • 原文地址:https://www.cnblogs.com/a1225234/p/4484945.html
Copyright © 2011-2022 走看看