200 個房間沿走廊兩側排列(奇數號北側,偶數號南側)。搬運桌子從房間 s 到 t,佔用走廊段 [min(s,t), max(s,t)]。每段每 10 分鐘只能通過一張桌子。求完成所有搬運的最短時間。
房間號 → 走廊段編號:
段 = (房間號+1)/2每次搬運對應區間 [L, R] 的段編號範圍,每段計數器 +1。最大計數 × 10 即答案。
[L, R],區間 +1maxCntmaxCnt * 10#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int T; scanf("%d", &T);
while (T--) {
int N; scanf("%d", &N);
int cnt[201] = {0};
for (int i = 0, s, t; i < N; ++i) {
scanf("%d%d", &s, &t);
if (s > t) swap(s, t);
int L = (s + 1) / 2;
int R = (t + 1) / 2;
for (int j = L; j <= R; ++j) ++cnt[j];
}
int mx = *max_element(cnt+1, cnt+201);
printf("%d\n", mx * 10);
}
return 0;
}