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

posted @ 2025-04-23 22:05  归游  阅读(104)  评论(0)    收藏  举报