Moving Tables

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 21   Accepted Submission(s) : 11

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

The famous ACM (Advanced Computer Maker) Company has rented a floor of a building whose shape is in the following figure.

The
floor has 200 rooms each on the north side and south side along the
corridor. Recently the Company made a plan to reform its system. The
reform includes moving a lot of tables between rooms. Because the
corridor is narrow and all the tables are big, only one table can pass
through the corridor. Some plan is needed to make the moving efficient.
The manager figured out the following plan: Moving a table from a room
to another room can be done within 10 minutes. When moving a table from
room i to room j, the part of the corridor between the front of room i
and the front of room j is used. So, during each 10 minutes, several
moving between two rooms not sharing the same part of the corridor will
be done simultaneously. To make it clear the manager illustrated the
possible cases and impossible cases of simultaneous moving.

For
each room, at most one table will be either moved in or moved out. Now,
the manager seeks out a method to minimize the time to move all the
tables. Your job is to write a program to solve the manager’s problem.

Input

The input consists of T test cases. The number of test cases ) (T is
given in the first line of the input. Each test case begins with a line
containing an integer N , 1<=N<=200 , that represents the number
of tables to move. Each of the following N lines contains two positive
integers s and t, representing that a table is to move from room number s
to room number t (each room number appears at most once in the N
lines). From the N+3-rd line, the remaining test cases are listed in the
same manner as above.

Output

The output should contain the minimum time in minutes to complete the moving, one per line.

Sample Input

3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50

Sample Output

10
20
30

题意:
要你搬桌子,有重叠的区域段不能同时搬,不重叠可以同时。每次搬桌子需要10分钟,问你最少用多长时间。
注意:
1.判断首尾,一开始就比较下,小的为start,大的为end。
                if(start>end){/*要判断头尾*/
                    t=end;
                    end=start;
                    start=t;
                }
2.由于(1,2)(3,4)。。。这种属于同一区段,因此简化下,就是( +1)/2,将区域划分,因为偶数加上没影响,所以可以不判断都直接计算。
                start=(start+1)/2;
                end=(end+1)/2;     
3.核心算法:贪心:哪个区域的经过次数最多,该次数就是我们所求取得数值;
         for(j=start;j<=end;j++)
                    a[j]++;
4.排序,排序后得到最大即:最繁忙的区域段 sort(a,a+201,cmp);(由大到小)
5.输出时,不要忘了*10。
代码:
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
#include<string.h>
bool cmp(int a,int b)
{
    if (a>b) return true;
    return false;
}
int main(){
    int T,a[201],n,t;
    int i,start,end,j;
    while(scanf("%d",&T)!=EOF){
        while(T--){
            memset(a,0,sizeof(a));/*头文件是<string.h>*/
            scanf("%d",&n);
            for(i=0;i<n;i++){
                scanf("%d%d",&start,&end);
                if(start>end){/*要判断头尾*/
                    t=end;
                    end=start;
                    start=t;
                }
                start=(start+1)/2;
                end=(end+1)/2;
                for(j=start;j<=end;j++)
                    a[j]++;
            }
            sort(a,a+201,cmp);
            printf("%d\n",a[0]*10);
        }
    }
    return 0;
}

Moving Tables的更多相关文章

  1. zstu.2512. Moving Tables(贪心)

     Moving Tables Time Limit: 1 Sec  Memory Limit: 64 MB Submit: 1182  Solved: 563 Description The famo ...

  2. Moving Tables(贪心或Dp POJ1083)

    Moving Tables Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 28304   Accepted: 9446 De ...

  3. HDOJ 1050 Moving Tables

    Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  4. 1050 Moving Tables

    Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  5. hdoj 1050 Moving Tables【贪心区间覆盖】

    Moving Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  6. uvalive 2326 - Moving Tables(区间覆盖问题)

    题目连接:2326 - Moving Tables 题目大意:在一个走廊上有400个教室, 先在有一些桌子要移动, 每次移动需要十分钟, 但是不同房间的桌子可以在同一个十分钟内移动,只要走廊没有被占用 ...

  7. HDU1050(Moving Tables:贪心算法)

    解题思路: 这种做法是基于hdu2037的做法上考虑的,找出所有可以同时搬运的桌子,然后就很方便求出最短总时间. 还有一种更简单的做法是直接遍历一遍找出与别的重复次数最多的那片区域,重复次数*10就可 ...

  8. B - Moving Tables

    B - Moving Tables Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  9. POJ1083 Moving Tables

    POJ1083 Moving Tables Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35297   Accepted: ...

随机推荐

  1. A list of base boxes for Vagrant - Vagrantbox.es

    Create image server with nginx + lua (Openresty) + graphicsmagick (Part I) | Ian's PhotograPhy Blog ...

  2. Yii目录树扩展ztree,ctree等

    ztree: http://blog.csdn.net/jake451/article/details/7091449 http://hi.baidu.com/qiangtan/item/e85c48 ...

  3. 北京Uber优步司机奖励政策(2月6日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. 巧用TAG属性保存对象的指针

    指针的数据类型是整型,一个指针就是一个整型的数值. 所以凡整型的变量(这个整型的变量可以是声明在INI文件中,也可以是声明在函数中的)也好,对象的整型的属性也好,都可以用来存储一个指针. 但对象往往没 ...

  5. Robotium学习笔记三

    以下是从网络上抄录的一些Robotium注意事项 1)有些button没有string,没有text,只能通过index来click这样很不直观,而且button的index并不是固定的,有可能随着控 ...

  6. Java获取一个路径下指定后缀名的所有文件

    方法一: http://blog.csdn.net/zjx102938/article/details/8114114 import java.io.File; import java.util.Ar ...

  7. android94 样式和主题

    style.xml <resources xmlns:android="http://schemas.android.com/apk/res/android"> < ...

  8. linux 打补丁 2原理

    1.创建目录 demo cd demo 有bug文件a.txt: 当前目录为demo mkdir -p old/a/p vi old/a/p/foo.txt old_line_1 old_line_2 ...

  9. Ubuntu下配置tftp服务

    Ubuntu下配置tftp服务 1.安装TFTP软件 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是客户端,tftpd-hpa是服务器端 2.建立t ...

  10. Android 开发第二天

    开发入门HelloWorld 首先打开开发工具 第一步 第二步 效果图 以后可以点击一直下去 第三步骤介绍一下里面项目的作用 SRC是用来保存源代码的东西MainAcrivity.java主视图res ...