早教吧作业答案频道 -->其他-->
招聘会人数c++题目招聘会人数来源元培-FromWHF描述某招聘机构举办招聘活动,事先不知道参会的确切人数。为了今后类似的招聘活动选择适当大小的场馆,招聘机构拟对每位参会人的进
题目详情
招聘会人数c++题目
招聘会人数
来源 元培-From WHF
描述
某招聘机构举办招聘活动,事先不知道参会的确切人数。为了今后类似的招聘活动选择适当大小的场馆,招聘机构拟对每位参会人的进出场馆时间进行记录。设第i个人进入会场的时间和离开会场的时间分别是xi, yi,那么,这个人在招聘会场的时间段t满足 xi <= t < yi。为简便起见,进出时间点用整数表示,且满足 0 <= xi < yi<1000。请统计,在这一天的招聘活动中,参会的总人数有多少;高峰时,最多有多少人同时在场。
关于输入
数据包括2行,这2行的数据个数相同:
第1行表示第i个人的到达时间xi,数之间用逗号间隔;
后1行表示第i个人的对应的离开时间yi,数之间也用逗号间隔。
例如:
2,5,4,6,7,3,1,6,2
5,6,7,7,8,4,3,9,4
表示有9个人,进出场的时间分别是:
[2,5),[5,6),[4,7),[6,7),[7,8),[3,4),[1,3),[6,9),[2,4)
关于输出
参加会议的总人数以及最多有多少人同时在场,两者之间以空格间隔。
上面例子中,参加会议的总人数为9人,最多的时候有3人同时在场。如,时间段:[2,5),[1,3),[2,4)
例子输入
2,5,4,6,7,3,1,6,2
5,6,7,7,8,4,3,9,4
例子输出
9 3
提示
总人数不超过1000人。
招聘会人数
来源 元培-From WHF
描述
某招聘机构举办招聘活动,事先不知道参会的确切人数。为了今后类似的招聘活动选择适当大小的场馆,招聘机构拟对每位参会人的进出场馆时间进行记录。设第i个人进入会场的时间和离开会场的时间分别是xi, yi,那么,这个人在招聘会场的时间段t满足 xi <= t < yi。为简便起见,进出时间点用整数表示,且满足 0 <= xi < yi<1000。请统计,在这一天的招聘活动中,参会的总人数有多少;高峰时,最多有多少人同时在场。
关于输入
数据包括2行,这2行的数据个数相同:
第1行表示第i个人的到达时间xi,数之间用逗号间隔;
后1行表示第i个人的对应的离开时间yi,数之间也用逗号间隔。
例如:
2,5,4,6,7,3,1,6,2
5,6,7,7,8,4,3,9,4
表示有9个人,进出场的时间分别是:
[2,5),[5,6),[4,7),[6,7),[7,8),[3,4),[1,3),[6,9),[2,4)
关于输出
参加会议的总人数以及最多有多少人同时在场,两者之间以空格间隔。
上面例子中,参加会议的总人数为9人,最多的时候有3人同时在场。如,时间段:[2,5),[1,3),[2,4)
例子输入
2,5,4,6,7,3,1,6,2
5,6,7,7,8,4,3,9,4
例子输出
9 3
提示
总人数不超过1000人。
▼优质解答
答案和解析
#include
using namespace std;
int main()
{ const int maxn=1001;
int sum,ans,i,x,end,t[maxn]={};//t[i]表示时间i的人数流动情况,有人进来就加1,出去就减1,={}是为了把其初值全赋为0
cin>>x;i=1;
t[x]++;
while(scanf(",%d",&x)>0) {t[x]++;i++;}
cout< cin>>x;
t[x]--;
end=x;//招聘会结束时间
while(scanf(",%d",&x)>0)
{ t[x]--;
if(x>end) end=x;
}
ans=sum=t[0];
for(i=1;i { sum+=t[i];//sum=t[0]+...+t[i]表示到时间i时场内的人数
if(sum>ans) ans=sum;
}
cout< }
这道题的时间范围不是很大,因此可以像上面直接开数组t[i]。
更好的算法是读入进场时间a[]和出场时间b[]两个数组,再分别排好序,即(以题目数据为例)
1 2 2 3 4 5 6 6 7
3 4 4 5 6 7 7 8 9
不妨设第i个人在a[i]时进场,在b[i]时离场,虽然这已与题目中数据每个人对应的进出场时间不同。
接下来
ans=0;
i=s=0;
for(j=0;j { while(a[i] if(i-s>ans) ans=i-s;
s++;//因为接下要看时间b[j+1]-1时的人数,则b[j]代表的这个人离场
}
using namespace std;
int main()
{ const int maxn=1001;
int sum,ans,i,x,end,t[maxn]={};//t[i]表示时间i的人数流动情况,有人进来就加1,出去就减1,={}是为了把其初值全赋为0
cin>>x;i=1;
t[x]++;
while(scanf(",%d",&x)>0) {t[x]++;i++;}
cout< cin>>x;
t[x]--;
end=x;//招聘会结束时间
while(scanf(",%d",&x)>0)
{ t[x]--;
if(x>end) end=x;
}
ans=sum=t[0];
for(i=1;i
if(sum>ans) ans=sum;
}
cout<
这道题的时间范围不是很大,因此可以像上面直接开数组t[i]。
更好的算法是读入进场时间a[]和出场时间b[]两个数组,再分别排好序,即(以题目数据为例)
1 2 2 3 4 5 6 6 7
3 4 4 5 6 7 7 8 9
不妨设第i个人在a[i]时进场,在b[i]时离场,虽然这已与题目中数据每个人对应的进出场时间不同。
接下来
ans=0;
i=s=0;
for(j=0;j
s++;//因为接下要看时间b[j+1]-1时的人数,则b[j]代表的这个人离场
}
看了 招聘会人数c++题目招聘会人...的网友还看了以下:
问大大们一个工程热力学的问题什么时候用Q=Δu+w什么时候用Q=Δh-w 2020-04-27 …
使用滑轮组做功的机械效率:(1)理想情况下(不考虑滑轮、绳重和摩擦):W额=0J,W总=W有,η= 2020-05-16 …
变加速度运动的位移怎么求一物体绕轴做匀速w转动,同时在轴线方向上做离心运动,此运动的加速度是变化的 2020-05-17 …
组成单词:1c,s,e,e,u,b,a2a,r,e,h,w,t,e3a,l,n,l,s,w,b,o 2020-05-21 …
已知点M(-2,0),N(2,0)动点P满足条件|PM|-|PN|=2√2.记动点P轨迹为W(1) 2020-06-04 …
关于正弦型函数y=A(wx+k)+h的变换问题.y=A(wx+k)+h不会打罗马字母,大家凑合看. 2020-06-12 …
在物理学中,为什么W动=W阻?如果W动=W阻,那动能定理做工的那边不是变为0了? 2020-06-23 …
按拼音给下列多音字组词。恶ě()哄hōng()和hé()è()hǒng()hè()wù()hòng 2020-06-23 …
用W和H字母开头的玩具店名我要在澳洲开一个玩具店,我姓王,合伙人姓贺,想用W和H为开头的两个单词起 2020-06-25 …
一金属球体沉于水中,球心在深度H处,球体半径为R,比重为w,水的比重为1,H>R,现将球体捞出水面 2020-06-25 …