题意: 给出n个客人进店的时间(hi,mi),按24小时制, 服务每个人需要1分钟, 求最少需要多少人。
分析:因为服务时间为1分钟, 客人进店的时差也是1分钟, 所以要么同一时间服务多个同时进店的人, 要么随便一个人服务其他仅一个人进店的人。
不用考虑没服务完一个人又有其他人进店。(差点写搓了)
所以:对时间排序, 求出最大重复时间个数就是答案。
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#define MAX 1005
#include <complex>
#include <ctime>
#include <cstdlib>
#include <cstring>
#include <string>
#define INF 1e8
#define MAX (int)1e5+ 5
using namespace std;
struct Client {
int h, m;
bool operator < (const Client &a)const {
return (h < a.h || (h == a.h && m < a.m) );
}
bool operator == (const Client &a)const {
return h == a.h && m == a.m;
}
void in() {
cin>>h>>m;
}
void out() {
cout<<h<<" "<<m<<endl;
}
} c[MAX];
int n, ans;
int main() {
while(cin>>n) {
for(int i = 0; i < n; i++) {
c[i].in();
}
sort(c, c + n);
int ans = 1, at = 0;
Client ct; ct.h = 99; ct.m = 99;
for(int i = 0; i < n; i++) {
if(!(c[i] == ct )) {
ans = max(ans, at);
at = 1;
ct = c[i];
} else {
at ++;
}
if(i == n - 1) {
ans = max(ans, at);
}
}
cout<<ans<<endl;
}
return 0;
}