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. HW4.11

    public class Solution { public static void main(String[] args) { int count = 0; for(int i = 100; i & ...

  2. 2016/9/7 jdbc.properties配置数据库相关

    ##MySQL#jdbc.driver=com.mysql.jdbc.Driver#jdbc.url=jdbc:mysql://localhost:3306/test#jdbc.username=ro ...

  3. python selenium启动浏览器打开百度搜索

    python selenium打开百度搜索 #!usr/bin/python from selenium import webdriver import time browser = webdrive ...

  4. linux中配置Java环境

    一. 下载JDK 下载linux版本的jdk32(64) 二. 需要配置的环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是 ...

  5. android 数据库的升级与降级解决方案

    在我们写的程序中不避免的需要升级.或者说需要改变业务逻辑,那这个时候就需要修改数据库的字段,来适应不同的表结构 我们一般写数据库都是操作一个继承至 SQLiteOpenHelper 的类 然后我们需要 ...

  6. Log4E

    工具地址:http://marketplace.eclipse.org/content/log4e Log4E插件能够帮助你在Java项目中轻松地创建记录器.它可以在以下几个任务中提供帮助:记录器声明 ...

  7. jfinal上传下载

    1. 上传 <form id="form1" method="post" enctype="multipart/form-data" ...

  8. Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例)

    1.POST请求:  数据是以流的方式写给服务器 优点:(1)比较安全 (2)长度不限制 缺点:编写代码比较麻烦   2.我们首先在电脑模拟下POST请求访问服务器的场景: 我们修改之前编写的logi ...

  9. 获取随机颜色js

    获取随机颜色方法一: function randomColor1() { var rand = Math.floor(Math.random() * 0xFFFFFF).toString(16); i ...

  10. asp.net分页控件库

    AspNetPager分页控件 AspNetPager分页控件解决了分页中的很多问题,直接采用该控件进行分页处理,会将繁琐的分页工作变得简单化,下面是我如何使用AspNetPager控件进行分页处理的 ...