1. Trang chủ
  2. » Giáo án - Bài giảng

Download đề và đáp án thi học sinh giỏi môn tin học lớp 11, 2008 2009 tỉnh quảng bình (khối chuyên)

5 249 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 56 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Dữ liệu vào: Cho trong file văn bản KITU.INP có cấu trúc nh sau: - Dòng 1: Ghi các kí tự của xâu St, các kí tự đợc viết liền nhau.. Dữ liệu ra: Ghi ra file văn bản KITU.OUT theo cấu trúc

Trang 1

Sở GIáO DụC Và ĐàO TạO

năm học 2008-2009

môn: tin học – KHốI CHUYÊN KHốI CHUYÊN

Đề chính thức

SBD Thời gian 180 phút, không kể thời gian giao đề

đề ra

Sử dụng ngôn ngữ lập trình Pascal để lập trình giải các bài toán sau:

Cho một xâu St gồm các kí tự từ 'a' 'z' có độ dài tối đa không quá 255 kí tự.

Yêu cầu: Hãy tìm tất cả các kí tự xuất hiện trong xâu St ít nhất hai lần.

Dữ liệu vào: Cho trong file văn bản KITU.INP có cấu trúc nh sau:

- Dòng 1: Ghi các kí tự của xâu St, các kí tự đợc viết liền nhau

Dữ liệu ra: Ghi ra file văn bản KITU.OUT theo cấu trúc nh sau:

- Dòng 1: Nếu không tìm đợc kí tự thỏa mãn yêu cầu thì ghi số -1 Ngợc lại thì ghi các kí tự

tìm đợc theo thứ tự tăng dần của mã ASCII, các kí tự ghi liền nhau.

Ví dụ:

KITU.INP KITU.OUT KITU.INP KITU.OUT hchcsucaaf ach hkcsuaf -1

Câu 2 (3,5 điểm): Tìm đờng đi ngắn nhất DUONGDI.PAS

Có N thành phố, các thành phố đợc đánh số từ 1 đến N, biết rằng đờng đi giữa hai thành phố bất kỳ (nếu có) đều là đờng đi hai chiều Sơ đồ mạng lới giao thông của N thành phố này đợc cho bởi ma trận Aij, trong đó:

+ Aij = 0 nếu không có đờng đi từ thành phố i đến thành phố j;

+ Aij > 0 là độ dài đờng đi từ thành phố i đến thành phố j;

+ Aij = Aji;

+ Aii = 0;

Yêu cầu: Hãy xác định đờng đi có độ dài ngắn nhất giữa hai thành phố P và Q.

Dữ liệu vào: Cho trong file văn bản DUONGDI.INP có cấu trúc nh sau:

- Dòng 1: Ghi 3 số nguyên dơng N P Q, các số đợc ghi cách nhau ít nhất một dấu cách (3

≤ N ≤ 100; 3 ≤ P, Q ≤ N; P ≠ Q).

- N dòng tiếp theo: Mỗi dòng ghi N số nguyên không âm là giá trị các phần tử trong ma

trận Aij (0 ≤ Aij ≤ 32767), các số đợc ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản DUONGDI.OUT theo cấu trúc nh sau:

- Dòng 1: Nếu không tồn tại đờng đi từ thành phố P đến thành phố Q thì ghi số -1 Ngợc lại

thì ghi số nguyên dơng S là độ dài đờng đi ngắn nhất tìm đợc.

- Dòng 2: Ghi lộ trình tơng ứng với độ dài đờng đi ngắn nhất tìm đợc, xuất phát từ thành

phố P và kết thúc ở thành phố Q, các số đợc ghi cách nhau ít nhất một dấu cách.

Ví dụ:

DUONGDI.INP DUONGDI.OUT DUONGDI.INP DUONGDI.OUT

4 1 4

0 3 7 10

3 0 4 4

7 4 0 2

10 4 2 0

7

1 2 4 4 1 4 0 3 0 0

3 0 1 0

0 1 0 0

0 0 0 0

-1

Câu 3 (3,5 điểm): Thời điểm gặp mặt GAPMAT.PAS

Một nhóm gồm N học sinh tham gia câu lạc bộ Tin học, các học sinh đợc đánh số từ

1 đến N Biết thời gian mà học sinh i có mặt tại câu lạc bộ là [ai,bi], trong đó ai là thời điểm

Trang 2

bắt đầu và bi là thời điểm kết thúc Cô giáo chủ nhiệm câu lạc bộ muốn đến gặp mặt các học sinh trong nhóm

Yêu cầu: Hãy giúp cô giáo chủ nhiệm xác định thời điểm đến câu lạc bộ sao cho gặp đợc

nhiều học sinh trong nhóm nhất

Dữ liệu vào: Cho trong file văn bản GAPMAT.INP có cấu trúc nh sau:

- Dòng 1: Ghi số nguyên dơng N, (1 ≤ N ≤ 32000).

- N dòng tiếp theo: Mỗi dòng ghi 2 số nguyên dơng ai và bi (1 ≤ ai < bi ≤ 32000), các số đợc ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản GAPMAT.OUT theo cấu trúc nh sau:

- Dòng 1: Ghi hai số nguyên dơng K T Trong đó K là số lợng học sinh có mặt ở câu lạc bộ

tại thời điểm T mà cô giáo đến Hai số ghi cách nhau ít nhất một dấu cách.

Giới hạn thời gian thực hiện chơng trình không quá 2 giây đối với 1 bộ dữ liệu vào Trong

đó có 40% bộ dữ liệu vào có giá trị của N> 16000.

Ví dụ:

GAPMAT.INP GAPMAT.OUT GAPMAT.INP GAPMAT.OUT

9 11

==== Hết ====

Sở GIáO DụC Và ĐàO TạO

năm học 2008-2009

môn: tin học – KHốI CHUYÊN KHốI CHUYÊN

Hớng dẫn chấm

I- Ph ơng pháp:

- Giám khảo tạo bộ dữ liệu vào, tính toán kết quả Thực hiện chơng trình của học sinh

và so sánh kết quả.

- Giám khảo có thể sử dụng chơng trình gợi ý dới đây để tính toán kết quả của dữ liệu vào.

- Chơng trình học sinh đúng một bộ test, giám khảo cho 0,5 điểm Nh vậy, nếu một bài

có 3 điểm thì giám khảo phải tạo 6 bộ test.

- Đối với câu 2, nếu học sinh đa ra đợc độ dài đờng đi ngắn nhất, giám khảo cho 1/2 số

điểm Có thể có nhiều lộ trình cùng cho ra một độ dài đờng đi ngắn nhất Nếu học sinh đa

ra phơng án khác với đáp án nhng vẫn đúng thì giám khảo cho điểm tối đa.

- Đối với câu 3:

+ Nếu học sinh đa ra đợc số lợng học sinh lớn nhất tại thời điểm giáo viên đến, giám khảo cho 1/2 số điểm Có thể có nhiều thời điểm giáo viên đến mà cho cùng một kết quả số lợng học sinh lớn nhất Nếu học sinh đa ra phơng án khác với đáp án nhng vẫn đúng thì giám khảo cho điểm tối đa.

2

Trang 3

+ Số lợng bộ dữ liệu vào có không gian lớn là 40%, (N>16000).

II- Ch ơng trình gợi ý:

Câu 1 (3,0 điểm): Tìm kí tự

Program Tim_ki_tu;

Const fi='Kitu.inp';

fo='Kitu.out';

Type mmc=Array['a' 'z'] of Byte;

Var A:mmc;

St:String;

f:text;

Procedure Doc;

begin

assign(f,fi);

reset(f);

readln(f,st);

close(f);

end;

procedure xl;

var i:byte;

begin

fillchar(a,sizeof(a),0);

for i:=1 to length(st) do a[st[i]]:=a[st[i]] +1;

end;

procedure xuat;

var ch:char; kt:boolean;

begin

assign(f,fo);

rewrite(f);

kt:=false;

for ch:='a' to 'z' do

if a[ch]>=2 then

begin

kt:=true;

write(f,ch);

end;

if kt=false then write(f,-1);

close(f);

end;

Begin

doc;

xl;

xuat;

End

Câu 2 (3,5 điểm): Tìm đờng đi ngắn nhất

Program Duong_di_ngan_nhat;

Const fi='Duongdi.inp';

fo='Duongdi.out';

MaxN = 101;

vc=32767;

Type mmc=Array[0 MaxN] of Integer;

mhc=Array[0 MaxN] of mmc;

Var A,L:mhc;

B:mmc;

N,P,Q,Top:Byte;

Procedure Doc;

Var i,j:byte; f:text;

Begin

Assign(f,fi);

Reset(f);

Readln(f,N,P,Q);

Trang 4

For i:= 1 to N do

Begin

For j:=1 to N do

Begin

Read(f,A[i,j]);

if A[i,j] = 0 then A[i,j]:= vc;

End;

Readln(f);

End;

Close(f);

Fillchar(L,sizeof(L),0);

End;

Procedure xl;

Var i,j,k:Byte;

Begin

For i:=1 to N do

For j:=i+1 to N do

For k:=1 to N do

If (A[i,k] < vc) and (A[k,j] < vc) then

If A[i,k] + A[k,j] < A[i,j] then

Begin

A[i,j]:=A[i,k] + A[k,j];

A[j,i]:=A[i,j];

L[i,j]:=k;

L[j,i]:=k;

End;

End;

Procedure Lay(i,j:Byte);

Begin

if L[i,j] = 0 then

Begin

inc(Top);

B[Top]:=j;

End

Else

Begin

Lay(i,L[i,j]);

Lay(L[i,j],j);

End;

End;

Procedure xuat;

Var i:Byte;f:text;

Begin

Assign(f,fo);

Rewrite(f);

if A[P,Q] < vc then

Begin

Top:=0;

Lay(P,Q);

Writeln(f,A[P,Q]);

Write(f,P, ' ');

For i:= 1 to Top do

Write(f,B[i], ' ');

End

Else

Writeln(f,-1);

Close(f);

End;

BEGIN

Doc;

xl;

4

Trang 5

xuat

END

C©u 3 (3,5 ®iÓm): Thêi ®iÓm gÆp mÆt

{$R+,B+,Q+}

const fi='gapmat.in2';

fo='gapmat.out';

type arr1 = array[0 32677] of word;

var a,b:^arr1;

f,g:text;

max,i,j,n,m:longint;

x,y,vt:word;

BEGIN

new(a);

new(b);

assign(f,fi);

reset(f);

readln(f,n);

for i:= 0 to 32000 do

begin

b^[i]:=0;

a^[i]:=0;

end;

for i:= 1 to n do

begin

readln(f,x,y);

a^[x]:=a^[x]+1;

b^[y]:=b^[y]+1;

end;

close(f);

max:=0;

m:=0;

for i:= 1 to 32000 do

begin

m:=m+a^[i]-b^[i-1];

if m>max then

begin

max:=m;

vt:=i ;

end;

end;

assign(g,fo);

rewrite(g);

writeln(g,max,' ',vt);

close(g);

dispose(a);

dispose(b);

END

Ngày đăng: 13/10/2015, 16:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w