一.简单题意
就是一个酒店在走廊搬桌子的问题,走廊两边,一边是偶数房间一边是奇数房间,搬动一次需要十分钟,可以同时进行,但是当我搬的桌子用到相同走廊的时候就不能同时进行。比如我搬的桌子是从1~5和6~10就需要20分钟。
二.解题思路
开始用贪心算法,可以求出答案,但一直wa,后来没有用贪心,就求需要走过的走廊次数,用最多的乘以10就可以。
三.感想
虽然这个题出在贪心算法,但却不是用贪心算法来解,我们应该用最简单的方法去解决问题
四.ac代码
#include<iostream>
using namespace std;
struct room
{
int begin_room;
int end_room;
}r[201];
int main()
{
int temp;
int n, m, p, max[201], time,a,b ;
cin >> n;
for (int i = 0; i < n; i++)
{
p = 0;
cin >> m;
for (int i = 0; i < 201; i++)
{
max[i] =0;
}
for (int j = 0; j < m; j++)
{
cin >> r[j].begin_room >> r[j].end_room;
a = (r[j].begin_room-1) / 2;
b = (r[j].end_room - 1) / 2;
if (a > b)
{
temp = a;
a = b;
b= temp;
}
for (int i = a; i <= b; i++)
{
max[i] = max[i] + 1;
}
}
time = 0;
for (int i = 0; i < 201; i++)
{
if (max[i] > time)
{
time = max[i];
}
}
cout << time*10 << endl;
}
return 0;
}