Moving Tables
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
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
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
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的更多相关文章
- zstu.2512. Moving Tables(贪心)
Moving Tables Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1182 Solved: 563 Description The famo ...
- Moving Tables(贪心或Dp POJ1083)
Moving Tables Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 28304 Accepted: 9446 De ...
- HDOJ 1050 Moving Tables
Moving Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- 1050 Moving Tables
Moving Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) To ...
- hdoj 1050 Moving Tables【贪心区间覆盖】
Moving Tables Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tot ...
- uvalive 2326 - Moving Tables(区间覆盖问题)
题目连接:2326 - Moving Tables 题目大意:在一个走廊上有400个教室, 先在有一些桌子要移动, 每次移动需要十分钟, 但是不同房间的桌子可以在同一个十分钟内移动,只要走廊没有被占用 ...
- HDU1050(Moving Tables:贪心算法)
解题思路: 这种做法是基于hdu2037的做法上考虑的,找出所有可以同时搬运的桌子,然后就很方便求出最短总时间. 还有一种更简单的做法是直接遍历一遍找出与别的重复次数最多的那片区域,重复次数*10就可 ...
- B - Moving Tables
B - Moving Tables Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- POJ1083 Moving Tables
POJ1083 Moving Tables Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 35297 Accepted: ...
随机推荐
- 使用ndk standalone工具链来编译某个平台下的库
地址: http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html It is now possible to use the toolcha ...
- poj 3469 Dual Core CPU【求最小割容量】
Dual Core CPU Time Limit: 15000MS Memory Limit: 131072K Total Submissions: 21453 Accepted: 9297 ...
- [一]初识Poi
示例代码: package com.lxl.poi; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSS ...
- phpstorm映射远程项目
项目要设置为default,否则自动更新会失败:type要选正确 development path和web path都要设置 options选项中选ctrl+s自动保存,且下方没告警
- 【转】基于RMAN实现坏块介质恢复(blockrecover)
本文转自:乐沙弥的世界 对于物理损坏的数据块,我们可以通过RMAN块介质恢复(BLOCK MEDIA RECOVERY)功能来完成受损块的恢复,而不需要恢复整个数据库或所有文件来修复这些少量受损的数据 ...
- linux命令之more
转自:http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示 ...
- java统计程序运行的时间
耗时统计 第一种是以毫秒为单位计算的.long startTime = System.currentTimeMillis(); //获取开始时间 //程序做一些功能性的操作doSomething ...
- 在JSP页面中输出JSON格式数据
JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.html J ...
- ibm rational software architect download
keep secret: rational software architect download: http://public.dhe.ibm.com/software/rationalsdp/v8 ...
- [转载](iPhone开发)Bundle Display Name 改为中文。ap
原文地址:(iPhone开发)Bundle Display Name 改为中文.app显示为中文作者:小新 要先在info的Localizations加入Chinese(zh-Hant) 再進到inf ...