#B. 教室外的风景
- 传统题1000ms256MiB
Background
Special for beginners, ^_^
Description
小猪上初中了,初中真好啊,有很多自修课哦。很多同学喜欢在自修课时到教室外面去,说是到老师那问问题J。 学校规定,自修课到教室外去的每个同学都必须做好登记,每次进出教室的登记是以一对整数a和b来描述的,表示 某一个同学在时刻a时到教室外面,在时刻b以后回到教室内。也就是说在时刻a至时刻b的这段时间中,这个登记的 同学一直在教室外面。校长想知道最多有多少同学在同一时刻都在教室外面,但同学们进进出出教室的记载实在很 乱,于是校长请参加信息学兴趣小组的小猪来统计。
Format
Input
第一行只有一个整数n,表示共有n个同学进出教室的记载。
接下来n行,每行二个整数a和b,表示有一个同学在第a时刻出了教室,他在第b时刻后回到教室。
1≤n≤100000,1≤a≤b≤100000.
Output
仅有一行,该行只有一个整数,表示最多有多少同学在同一时刻都在教室外面。
Samples
输入数据 1
4
2 6
8 9
1 5
1 2
Copy
输出数据 1
3
数组法:差分入门、数组专题(基础组与提高组共用)_羚羊向未来的博客-CSDN博客
#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
int n;
cin>>n;
while(n--){
int l,r;
cin>>l>>r;
a[l]++;
a[r+1]--;
}
int ans=0;
for(int i=0;i<=100000;i++){
a[i]+=a[i-1];
ans=max(ans,a[i]);
}
cout<<ans;
return 0;
}
数组+MAP:map数组思想处理差分数组(两习题)_c++教室外的风景_fei头一只的博客-CSDN博客
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n;
cin>>n;
map<int,int>m;//创建了一个名为 m 的 map 容器,用于存储整数对应的频率。
while(n--)
{ int l,r;
scanf("%d %d",&l,&r);
m[l]++;//表示将键 l 对应的值加1。如果该键尚不存在于 m 中,则会自动插入一个新的键值对,并将值初始化为0。
m[r+1]--;//表示将键 r+1 对应的值减1。同样,如果该键尚不存在于 m 中,则会自动插入一个新的键值对,并将值初始化为0。
}
int max=0;
int sum=0;
map<int,int>::iterator it;
for(it=m.begin();it!=m.end();it++)
{
sum+=it->second;
if(sum>=max)max=sum;
}
cout<<max;
return 0;
}
#C. 专用牛棚(和上题完全一样解法)
- 传统题1000ms256MiB
Background
Special for beginners, ^_^
Description
有N头牛,每头牛有个喝水时间,这段时间它将专用一个Stall
现在给出每头牛的喝水时间段,从A到B,问至少要多少个Stall 才能满足它们的要求
1 <= N <= 50,000
1 <= A <= B <= 1,000,000
保证A<=B
Format
Input
第一行给出数字N
接下来N行
每行两个数字a,b代表某头牛喝水的开始与结束时间.
Output
至少要多少个stall
Samples
输入数据 1
5
1 10
2 4
3 6
5 8
4 7
Copy
输出数据 1
4