版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qinlingheshang/article/details/79770402
Chapter One
Section 3
- Moving Tables
题目求解
- 区间覆盖求解
- 题目中的一个容易被忽视的点便在于,所有的奇数房间在一旁,所有偶数房间在另一旁。如果只是简单的判断房间序号大小是否相交,会出现错误情况。
- 如图所示,在9和10号房间中的区域明显被公用,需要20分钟时间才可以。
- 从走廊的角度思考,1号和2号房间对应于1号走廊,3号和4号房间对应2号走廊。如此,便是有两百个这样的位置。可以发现,走廊号=(房间号+1)/2
代码如下:
#include <stdio.h>
#include <string.h>
int flag[201];
int main()
{
int nCases, n, i, cnt;
int s, t;
scanf("%d", &nCases);
int tab;
while (nCases--)
{
cnt = 0;
memset(flag, 0, sizeof(flag));//将flag[201]中数据清零
scanf("%d", &n);
while (n--)
{
scanf("%d %d", &s, &t);
if (s>t)
{
tab =t;
t=s;
s=tab; //s为输入数据中较小的值,t为较大的值
}
for (i=(s+1)/2; i<=(t+1)/2; i++)
flag[i] += 1;
}
cnt = flag[1];
for (i=2; i<201; i++)
{
if (cnt<flag[i])
cnt = flag[i];//取出最大值
}
printf("%d\n", cnt*10);
}
return 0;
}