Moving Tables
程序员文章站
2022-03-26 11:30:05
...
题意:在一个狭窄的走廊里将桌子从一个房间移动到另一个房间,走廊的宽度只能允许一个桌子通过。给出t,表示有t组测试数据。再给出n,表示要移动n个桌子。n下面有n行,每行两个数字,表示将桌子从a房间移到b房间。走廊的分布图如一图所示,每移动一个桌子到达目的地房间需要花10分钟,问移动n个桌子所需要的时间。
输入:
3
4
10 20
30 40
50 60
70 80
2
1 3
2 200
3
10 100
20 80
30 50
输出:
10
20
30
**分析:1、如果没有交叉,总时间应该是10.
2、影响搬运时间的因素是什么?
3、如果每趟处理都包含最大重叠,处理后的效果是层数最多的那个乘以10。
**
代码实现:
#include <iostream>
using namespace std;
int main()
{
int t, i, j, N, P[200];
int s, d, temp, k, min;
cin >> t;
for (i = 0; i<t; i++)
{
for (j = 0; j<200; j++) P[j] = 0;
cin >> N;
for (j = 0; j<N; j++)
{
cin >> s >> d;
s = (s - 1) / 2;
d = (d - 1) / 2;
if (s>d)//每次都让低的为s,高的为d
{
temp = s;
s = d;
d = temp;
}
for (k = s; k <= d; k++) P[k]++;//让s到d的数都自增
}
min = -1;
for (j = 0; j<200; j++)
if (P[j]>min) min = P[j];//找度数最大(层数)
cout << min * 10 << endl;
}
return 0;
}
推荐阅读
-
create table,show tables,describe table,DROP TABLE,ALTER TABLE ,怎么使用?
-
MySQL open_tables和opened_tables
-
How to Create Responsive Tables using CSS without