Moving Tables

    xiaoxiao2023-10-05  144

    题意:在一个狭窄的走廊里将桌子从一个房间移动到另一个房间,走廊的宽度只能允许一个桌子通过。给出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; }
    最新回复(0)