杭电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;
}