题目大意
解题思路
将搬桌子时房间被经过的次数看做数组元素初始为0,走廊两侧的房间看做数组元素的同一个地址,类似于桶排序,N组桌子在搬的过程中对应的数组元素+1,最后数组元素(某个房间被经过次数)的最大值也就是最多使用走廊的次数
代码实现
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--) { //总组数循环
int N;
cin>>N; //每组搬桌子次数
int p[200]={0}; //在每组循环开始,将搬桌子时经过的房间次数当做数组元素,初始为0
while(N--){ //每组搬桌子循环
int s,d;
cin>>s>>d; //输入要搬桌子的起点房间号与终点房间号
s=(s-1)/2; //判定房间号对应的数组地址
d=(d-1)/2;
while(s>d){
int temp;
temp=s;
s=d;
d=temp; //若起点房间号大于终点房间号,将其交换一下
}
for(int i=s;i<=d;i++){
p[i]++; //类似于桶排序,在搬桌子过程中经过的房间对应的数组元素++
}
}
int max=-1;
for(int j=0;j<200;j++){
if(p[j]>max)
max=p[j];
} //遍历寻找数组元素最大值,即要使用走廊的最多次数
cout<<max*10<<endl;
}
return 0;
}
bug
编译错误 未在t组数据每次循环开始时重新将数组p[k]初始为0