400个房间分布在一条走廊的两侧,每侧各200个。1的对面是2,3的对面是4,…,399的对面是400。
然后就是挪动桌子占用走廊,n次挪动,最少时间。
把桌子从l挪动到r(l
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int cnt[205];
int main()
{
//freopen("input.txt", "r", stdin);
int T;
scanf("%d", &T);
while (T--)
{
memset(cnt, 0, sizeof(cnt));
int N;
scanf("%d", &N);
int l, r;
while (N--)
{
scanf("%d%d", &l, &r);
if (r < l)
{
int temp = l;
l = r;
r = temp;
}
l = (l + 1) / 2;
r = (r + 1) / 2;
for (int i = l; i <= r; ++i)
{
cnt[i]++;
}
}
int ans = 0;
for (int i = 1; i <= 200; i++)
{
if (cnt[i] > ans)
ans = cnt[i];
}
printf("%d\n", ans * 10);
}
//printf("end\n");
//while (1);
return 0;
}

本文解决了一个有趣的问题:如何计算在一条走廊两侧分布的400个房间中,进行多次桌子挪动时所需的最少时间。通过将问题转化为算法,利用C++编程实现了解决方案。
426

被折叠的 条评论
为什么被折叠?



