欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

贪心算法之区间重叠问题(moving tables)

程序员文章站 2023-12-31 14:48:28
...

贪心算法之区间重叠问题(moving tables)
贪心算法之区间重叠问题(moving tables)

接法(1)
思路:对于本题的求解,我们可以先求出移动桌子时,经过每间房间的次数,继而求出经过其中一个房间的最大次数,将桌子从一个房间移到另一个房间可以在10分钟内完成,因为每个房间移动桌子的路线不能重叠,所以最大次数*10就是所需的时间。
注(
1 memset函数:是对数组每个值进行清0;
2 因为房间共400个,但都是对称排列,对于小的一个房间号,如果是从偶数的序号开始,那么一定经过对应的奇数号房间,故要减1。那你们可能要问,如果小的房间号如果是奇数呢?奇数我们不用进行操作,因为它相对的就是一个偶数房间,对应的偶数房间恰好比它大。
对于大的房间号,如果是奇数,那么要加1,原因同上。

#include<stdio.h>
#include<string.h>
int main()
{
	int a,b,c,d,i,j,s[401],e,t;
	scanf("%d",&a);
	while(a--)
	{
		e=0;
		memset(s,0,sizeof(s));
		scanf("%d",&b);
		for(i=1;i<=b;i++)
		{
			scanf("%d%d",&c,&d);
			if(c>d)
			{
				t=c;
				c=d;
				d=t;
			}

			if(c%2==0)
				c--;
			if(d%2!=0)
				d++;

			for(j=c;j<=d;j++)
			{
				s[j]++;
			}
		}
		for(i=1;i<=400;i++)
		{
			if(s[i]>e)
				e=s[i];
		}
		printf("%d\n",e*10);
	}
	return 0;
}
(希望可以帮助你们~
相关标签: 算法

上一篇:

下一篇: