ACM_不知所措的统计员

Problem Description:

GDUFE-GAME完美结束,按照惯例,会有一篇报道,描述活动期间的盛况,因此相关人员找到负责统计的ASDF,但是ASDF只知道第i个人在S_i时进场,在E_i时离开。为了体现活动的盛大,报道中需要用到某一时刻处在活动现场的人数(这个数当然越大越好),但由于人数太多,ASDF实在是数不过来。如果你帮ASDF完成这个任务,他会请你吃传说中的黯然销魂翅。

Input:

数据包括多个测试实例。
每个测试实例第一行包含一个整数 n (1 ≤ n ≤ 100000) 代表一共有n个人,接下来一行有n个数,代表每个人的进场时间,再接下来一行有n个数代表每个人的离开时间。
时间范围: 0 ~ 100000

Output:

输出某一时刻同时在现场的人数最大值。

Sample Input:

4
1 3 5 7
2 8 6 8

Sample Output:

2
解题思路:差分思想:进场时间点加1,离场时间点减1,然后累加求前缀和即为每个时间点出现的人数,同时更新该时间点在场的最多人数。
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int e,n,num,sum,cnt[100010];//差分数组
 4 int main(){
 5     while(cin>>n){
 6         memset(cnt,0,sizeof(cnt));sum=num=0;
 7         for(int i=0;i<n;++i)cin>>e,++cnt[e];//进场的时间点加1
 8         for(int i=0;i<n;++i)cin>>e,--cnt[e];//离场的时间点减1
 9         for(int i=0;i<=100000;++i)sum+=cnt[i],num=max(num,sum);//更新每个时间点的最多人数
10         cout<<num<<endl;
11     }
12     return 0;
13 }

原文地址:https://www.cnblogs.com/acgoto/p/8825004.html