各位大神,题目求救!
pascal吧
全部回复
仅看楼主
level 3
勤秋涵T 楼主
教室外的风景
时间限制: 1 Sec 内存限制: 128 MB
]题目描述
小猪上初中了,初中真好啊,有很多自修课哦。很多同学喜欢在自修课时到教室外面去,说是到老师那问问题J。
学校规定,自修课到教室外去的每个同学都必须做好登记,每次进出教室的登记是以一对整数a和b来描述的,表示某一个同学在时刻a时到教室外面,在时刻b以后回到教室内。也就是说在时刻a至时刻b的这段时间中,这个登记的同学一直在教室外面。
校长想知道最多有多少同学在同一时刻都在教室外面,但同学们进进出出教室的记载实在很乱,于是校长请参加信息学兴趣小组的小猪来统计。
输入
第一行只有一个整数n,表示共有n个同学进出教室的记载。
接下来n行,每行二个整数a和b,表示有一个同学在第a时刻出了教室,他在第b时刻后回到教室。
输出
仅有一行,该行只有一个整数,表示最多有多少同学在同一时刻都在教室外面。
样例输入4 2 6 8 9 1 5 1 2 样例输出3提示
【样例说明】
第一个同学在时刻2到教室外面,在时刻6后回到教室;
第二个同学在时刻8到教室外面,在时刻9后回到教室;
第三个同学在时刻1到教室外面,在时刻5后回到教室;
第四个同学在时刻1到教室外面,在时刻2后回到教室;
因此在时刻2时,最多有3个同学(第一个、第三个和第四个)在教室外面。
【数据规模】
50%的数据中,1≤n≤1000;每个同学进出教室的时刻a和b满足:1≤a≤b≤1000;
100%的数据中,1≤n≤100000,1≤a≤b≤100000000。
2014年02月13日 02点02分 1
level 5
线段树
2014年02月13日 03点02分 2
level 11
var
n,a,b,x,y:longint;
answer:longint;
temp:array[1..10000000] of longint;
begin
answer:=0;
readln(n);
Fillchar(temp,sizeof(temp),0);
for x:=1 to n do
begin
readln(a,b);
for y:=a to b do
begin
temp[y]:=temp[y]+1;
if temp[y]>answer then answer:=temp[y];
end;
end;
writeln(answer);
end.
爪机无力,编译什么的
lz
自己去试试吧〔有错误别怪我[吐舌]
2014年02月18日 20点02分 3
额。。。内存超限了。。。
2014年03月17日 11点03分
level 1
temp:array[1..10000000] of longint;会超过内存限制的!
2014年03月13日 11点03分 4
level 1
var i,n,sum,max:longint;
a,b,r1,r2:array[1..100000]of longint;
procedure sc(t,w:longint);
var i,m,k,j:longint;
begin
if t=w then exit;
m:=(t+w)div 2;
sc(t,m);sc(m+1,w);
i:=t;j:=m+1;k:=t;
while (i<=m)and(j<=w) do
if a[i]>a[j] then
begin
r1[k]:=a[j];r2[k]:=b[j];
inc(k);inc(j);
end
else
begin
r1[k]:=a[i];r2[k]:=b[i];
inc(k);inc(i);
end;
while i<=m do
begin
r1[k]:=a[i];r2[k]:=b[i];
inc(k);inc(i);
end;
while j<=w do
begin
r1[k]:=a[j];r2[k]:=b[j];
inc(k);inc(j);
end;
for i:=t to w do
a[i]:=r1[i];
for i:=t to w do
b[i]:=r2[i];
end;
begin
readln(n);
for i:=1 to n do
begin
readln(a[i*2-1],a[i*2]);
b[i*2-1]:=1;b[i*2]:=-1;
end;
sc(1,n*2);
for i:=1 to n*2 do
begin
sum:=sum+b[i];
if sum>max then max:=sum;
end;
writeln(max);
end.
sc是归并排序,a数组升序排序。
2015年06月11日 14点06分 5
1