杭电1050题贪心

杭电1050题贪心算法

解题思路:本题为贪心算法,为求最优时间,可以先将走廊两侧房间均加1除以2使得两侧房间数组下标相等,定义一个数组,将数组赋初值为0,遍历数组,经过一次房间则加1,最后找到数组里最大的数即最优解。

#include<iostream>
using namespace std;
int main()
{
	int t,n,temp,a,b;
	cin>>t;
	while(t--)
	{
		cin>>n;
		int s[201]={0};
		for(int i=0;i<n;i++)
		{
			cin>>a>>b;
			if(a>b)  //坑点,房间号前面可能比后面大 
			{  //进行交换 
			   temp=a;
			   a=b;
			   b=temp;	
			}
			for(int j=(a+1)/2;j<=(b+1)/2;j++)   //将房间号按题意序列化 
			   s[j]++;
		}
		for(int i=1;i<201;i++)
		   if(s[0]<s[i])
		      s[0]=s[i];   //找出经过次数最多的房间,输出它的次数 
	    cout<<s[0]*10<<endl;  
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_39905917/article/details/83045633