最简单的区间贪心,但是考察细心。

注意事项:

1、考虑s>t的情况

2、读入的时候要把s、t分别转换为(s+1)div 2和(t+1)div 2

代码:

Program poj1083;//By_Thispoet
Const 
	maxn=200;
Var
	t,i,j,k,m,n						:Longint;
	heap,l,r						:Array[1..maxn*2]of Longint;
	heap_size						:Longint;
	
Procedure Down(i:Longint);
var j:Longint;
begin
	while ((i<<1)<=heap_size) do 
		begin
			j:=i<<1;
			if (j<heap_size)and(heap[j]>heap[j+1])then inc(j);
			if heap[j]<heap[i] then 
				begin
					heap[i]:=heap[i] xor heap[j];
					heap[j]:=heap[i] xor heap[j];
					heap[i]:=heap[i] xor heap[j];
					i:=j;
				end else break;
		end;
end;
	
	
Procedure Up(i:Longint);
var j:Longint;
begin
	while (i>1) do 
		begin
			j:=i>>1;
			if heap[j]>heap[i] then 
				begin
					heap[i]:=heap[i] xor heap[j];
					heap[j]:=heap[i] xor heap[j];
					heap[i]:=heap[i] xor heap[j];
					i:=j;
				end else break;
		end;
end;
	
	
Procedure Qsort(ll,rr:Longint);
var i,j,k,temp:Longint;
begin	
	i:=ll;j:=rr;
	k:=l[i+random(j-i+1)];
	repeat
		while l[i]<k do inc(i);
		while l[j]>k do dec(j);
		if i<=j then 
			begin
				temp:=l[i];l[i]:=l[j];l[j]:=temp;
				temp:=r[i];r[i]:=r[j];r[j]:=temp;
				inc(i);dec(j);
			end;
	until i>j;
	if ll<j then Qsort(ll,j);
	if i<rr then Qsort(i,rr);
end;
	
	
Procedure Swap(var i,j:Longint);
begin
	i:=i xor j;
	j:=i xor j;
	i:=i xor j;
end;
	
	
BEGIN	

	readln(t);
	randomize;
	
	while t>0 do 
		begin
		
			heap_size:=0;
			readln(n);
			for i:=1 to n do 
				begin
					readln(l[i],r[i]);
					if l[i]>r[i] then Swap(l[i],r[i]);
					l[i]:=(l[i]+1)>>1;
					r[i]:=(r[i]+1)>>1;
				end;

			Qsort(1,n);
			for i:=1 to n do 
				begin
					if (heap_size>0)and(heap[1]<l[i])then 
						begin
							heap[1]:=r[i];
							Down(1);
						end else 	
							begin
								inc(heap_size);
								heap[heap_size]:=r[i];
								Up(heap_size);
							end;
				end;
			writeln(heap_size*10);
			dec(t);
			
		end;

END.