L2-055 胖达的山头
差分 典型题
把时间全部转换成秒,这段时间时间出现过,即这段时间内有一个熊猫,全部+1,这里就是很明显地,暗示差分操作。
而在此题中,一段时间内,同一个山头上不能有多个熊猫,因此所以某个时间出现最多的熊猫就是所求的山头数量。
这里利用差分,便于区间赋值,最后从头累加,累加后的值即是每一个时间点的熊猫数量,便是所求.
点击查看代码
#include<bits/stdc++.h>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int n;
const int maxn=24*3600+100;
int diff[maxn];
int get(string x){
return stol(x.substr(0,2))*3600+stol(x.substr(3,2))*60+stol(x.substr(6,2));
}
int main(){
cin>>n;
for(int i=1;i<=n;++i){
string s;cin>>s;
diff[get(s)]++;
cin>>s;
diff[get(s)+1]--;
}
int now=0;
int ans=0;
for(int i=0;i<=maxn-10;++i){
now+=diff[i];
ans=max(now,ans);
}
cout<<ans<<endl;
return 0;
}

浙公网安备 33010602011771号